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语言编译器中进行编译和运行,然后根据提示输入一个正整数,程序将输出该数是否为素数。

营销型网站