C语言求素数代码
for(c=2;c<=b;c++)if(a%c==0)break;--这是一句。
c从2起,2,3,4,5。。到b,依次去除a,
a%c==0--如果(除法求余数)余数是0,就是除尽了,它不是素数
break;--一旦除尽了就break,也就是结束循环。这时的c循环到多少就等于多少,不会大于b.
如果(除法求余数)余数是始终不是0,直到b也没除尽。循环结束。
出循环体时,由于c++,c增1。c最大值不超过b+1.
接下来if(c>=b+1)就是判断上面循环状态,到底循环到几。
满足c>=b+1是素数,否则不是。
显然c>=b+1
以下是一个简单的C语言代码示例,用于求出10到100之间的所有素数[❶](https://cloud.tencent.com/developer/article/1751025)[❷](https://blog.csdn.net/BJYX_L/article/details/132146944#comments_28044711)[❹](https://blog.csdn.net/BJYX_L/article/details/132146944)[❽](https://blog.csdn.net/weixin_73383175/article/details/128228041)。
```c
#include<stdio.h>
intmain()
{
inti,j,count=0;
for(i=10;i<=100;i++)
{
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
break;
}
if(j>sqrt(i))
{
count++;
printf("%d\t",i);
if(count%10==0)
printf("\n");
}
}
printf("共有%d个素数\n",count);
return0;
}
```
这段代码的主要思路是:
1.使用外层for循环遍历10到100之间的所有整数。
2.在内层for循环中,从2开始,到整数i的平方根结束。这是因为一个数的因子最多不会超过它的平方根,如果在这个范围内没有找到能整除的数,那么这个数就是素数[❷](https://blog.csdn.net/BJYX_L/article/details/132146944#comments_28044711)[❹](https://blog.csdn.net/BJYX_L/article/details/132146944)。
3.如果在内层循环中找到了一个能整除i的数,那么就跳出内层循环。
4.如果在外层循环结束后,内层循环都没有跳出,那么说明i是素数,将其加入素数的计数中,并打印出来。
5.每打印出10个素数,就换一行,以便于查看结果。
这段代码的优化之处在于,在内层循环中,只需要检查到整数i的平方根,而不是全部的数,这大大减少了计算量[❷](https://blog.csdn.net/BJYX_L/article/details/132146944#comments_28044711)[❹](https://blog.csdn.net/BJYX_L/article/details/132146944)。
以下是一个用C语言求素数的简单代码示例:
#include<stdio.h>
intisPrime(intn){
if(n<=1){
return0;
}
for(inti=2;i*i<=n;i++){
if(n%i==0){
return0;
}
}
return1;
}
defmain(){
doublen,i;
cin>>n;
srand();//随机生成一个正整数种子,保证每次运行程序都是随机的
i=isPrime(17);//当输入为17时,返回1,因为17是素数
cout<<"素数个数:"<<i<<endl;
sleep(1);//暂停一下,控制输出速度
cin>>n;//清空输入缓冲区,重新输入下一个数字
sleep(1);//清空缓存区,控制输出速度
cout<<"素数个数:"<<i<<endl;
sleep(1);//清空缓存区,控制输出速度
cin>>n;//清空缓存区,重新输入下一个数字
sleep(1);//清空缓存区,控制输出速度
cout<<"素数个数:"<<i<<endl;
sleep(1);//清空缓存区
素数指的是大于1的自然数,除了1和自身外,没有其他正因数的数。
以下是一段用C语言编写的求素数的代码:
#include<stdio.h>
//判断一个数是否为素数的函数
intis_prime(intn){
//如果数字小于等于1,则不是素数
if(n<=1){
return0;
}
//从2开始循环到sqrt(n)+1
for(inti=2;i<=sqrt(n)+1;i++){
//如果n能被i整除,则不是素数
if(n%i==0){
return0;
}
}
//如果循环结束都没有被整除,则是素数
return1;
}
intmain(){
intn;
printf("请输入一个正整数:");
scanf("%d",&n);
//调用is_prime函数判断输入的数是否为素数
if(is_prime(n)){
printf("%d是一个素数。\n",n);
}else{
printf("%d不是一个素数。\n",n);
}
return0;
}
在这个程序中,我们首先定义了一个名为is_prime的函数,用于判断一个数是否为素数。该函数使用一个循环来检查从2到该数平方根加1的所有数,如果该数能被这些数整除,则它不是素数,函数返回0;否则,它是素数,函数返回1。
在main函数中,我们首先提示用户输入一个正整数,然后调用is_prime函数来判断这个数是否为素数。根据is_prime函数的返回值,我们输出相应的结果。
你可以将代码复制到C语言编译器中进行编译和运行,然后根据提示输入一个正整数,程序将输出该数是否为素数。