第1步:判断一个数为素数,这里用n=5举例。
#include<stdio.h>
int main()
{
int b;
int n = 5;
for(b=2; b<n; b++)
if(n%b == 0) //合数
{
break;
}
if(b == n)
{
printf("%d", n);
}
return 0;
}
第2步:嵌套一个for循环,实现自动按顺序判断n到m之间的素数。
#include<stdio.h>
int main()
{
int b;
int n,m,i=0;
scanf("%d %d", &n, &m);
for(i=n;i<=m;i++)
{
for(b=2; b<=i; b++)
{
if(i == 2 )
{
printf("%d ", i); //如果有2,输出2
}
if(i%b == 0) //合数则跳出循环
{
break;
}
if(i == b+1) //与第一步不同的地方!
{
printf("%d ", i);
}
}
}
return 0;
}
第3步:给这些素数求和即可。
#include<stdio.h>
int main()
{
int b,n,m,i=0;
int sum = 0;
scanf("%d %d", &n, &m);
for(i=n;i<=m;i++)
{
for(b=2; b<=i; b++)
{
if(i == 2 ) //单独判断有2的情况
{
printf("%d ", i);
sum += i;
}
if(i%b == 0) //合数,跳出循环
{
break;
}
if(i == b+1) //n不能被2到n-1整数,则为素数
{
printf("%d ", i);
sum += i;
}
}
}
printf("\n");
printf("%d", sum);
return 0;
}
输入样例:
1 100
输出样例:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
1060
所以1至100之间所有素数之和为1060。