C语言求素数和

#include<stdio.h>
#include<math.h>

void main()
{
int a,b,c,d,sum;
scanf("%d",&a);
sum=0;
for(d=3;d<=a;d++)
{
b=0;
for(c=2;c<=sqrt(a);c++)
{ if(a%c==0)
{
b=1;
break;
}
}

if(b==0) sum=sum+a;

}
printf("%d",sum);
}

求高手修改下...

/*求素数的三种方法
一:for(i=2;i<=(n-1);i++)
if(n%i==0)i在2到n-1之间任取一个数,如果n能被整除则不是素数,否则就是素数
二:for(i=2;i<n/2;i++)
if(n%i==0) /*i在2到n/2之间任取一个数,如果n能被整除则不是素数,否则就是素数

三:for(i=2;i<(n=sqrt(n));i++)
if(n%i==0) /*i在2到sqrt(n)之间任取一个数,如果n能被整除则不是素数,否则就是素数,在下省了下面的输出步骤*/

/*在本程序中使用第三种方法来求解*/
#include <stdio.h>
#include <math.h>
int main(void)
{
int i; /*外循环*/
int j; /*内循环*/
int flag; /*素数标志,flag为1则此数为素数*/
flag = 0;
//int n;
i = 2;
while( i <= 100)
{
j = 2;
flag = 1; /*假设此数为素数*/
while(j <= (int) sqrt(float(i)))
{
if(0 == (i %j))
flag = 0; /*根据第三种算法可知次数不为素数*/
j ++;
}
if(flag)
printf("%d\t",i);
i++;
}
printf("\n");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-19
/*求素数的三种方法
一:for(i=2;i<=(n-1);i++)
if(n%i==0)i在2到n-1之间任取一个数,如果n能被整除则不是素数,否则就是素数
二:for(i=2;i<n/2;i++)
if(n%i==0) /*i在2到n/2之间任取一个数,如果n能被整除则不是素数,否则就是素数
三:for(i=2;i<(n=sqrt(n));i++)
if(n%i==0) /*i在2到sqrt(n)之间任取一个数,如果n能被整除则不是素数,否则就是素数,在下省了下面的输出步骤*/
/*在本程序中使用第三种方法来求解*/
#include <stdio.h>
#include <math.h>
int main(void)
{
int i; /*外循环*/
int j; /*内循环*/
int flag; /*素数标志,flag为1则此数为素数*/
flag = 0;
//int n;
i = 2;
while( i <= 100)
{
j = 2;
flag = 1; /*假设此数为素数*/
while(j <= (int) sqrt(float(i)))
{
if(0 == (i %j))
flag = 0; /*根据第三种算法可知次数不为素数*/
j ++;
}
if(flag)
printf("%d\t",i);
i++;
}
printf("\n");
return 0;
}
第2个回答  2012-03-02
main()
{
int i,m,j; //增加一个变量,见后面说明
for(i=2;i<=100;i++)
{m=sqrt(i);
//for(i=2;i<=m;i++) 这里i值被重新赋值,你原来的i值找不到了!如果是素数,怎么输出呢?
for(j=2;j<=m;j++) //换一个变量,不要影响要检查的数据i
if(j%m!=0) //改成j
; //这样写,会让你更清楚,这句如果j不能整除m,就啥也不干,象你所说回到下一个循环检查。
else
break; //加上这两句,如果能整除则说明:i不是素数!!就不要再去检查了。
if ( j > m ) //加上这句,如果检查所有的j全部不能整除m,循环结束后,j一定大于m,这时的i才是素数
printf("%d",i);
}

getch();
}
第3个回答  2018-06-25
思路如下:
1、求2-n之间的所有素数
2、创建一个数组a[n+2],其下表为2...n+1
3、数组的功能是记录那些数十素数,其下标表示素数,元素初始化时全为1,表示全部数假设都是素数
4、从2开始往后访问数组的每一个元素,如果这个数十素数就输出,否则往后遍历
5、遍历的同时如果这个数i是素数,则进一步往后将这个数的倍数2*i,3*i,....将这些数都标记为0表示不是素数 6、执行完毕将输出所有素数了
第4个回答  2015-12-12

思路:所谓素数是指只能被1和自身整除的数叫作素数,判断素数就可以从2到该数减一依次判断能否整除该数,如果能则不是素数,否则就是素数。

参考代码:

#include<stdio.h>
int isp(int n)//判断是否是素数,是返回1,否则返回0
{
int i;
for(i=2;i<n;i++)
if(n%i==0) return 0;
return 1;
}
int main()
{
int a;
scanf("%d",&a);
if(isp(a))
printf("%d是素数\n",a);
else
printf("%d不是素数\n",a);
return 0;
}
/*
输出: 
89
89是素数
*/