今日做了 统计素数并求和 的题,来自于浙大翁恺老师的课程习题,题目内容如下:
本题着手点在于两点,一是输入两个正整数,且找出两个数之间的所有素数的个数,二是将找出的素数相加求和;
答题:
#include<stdio.h>
int main()
{
int M,N;
scanf("%d %d",&M,&N);
if(M==1){ //当 M 输入为 1 时,因为 1 不是素数,将其剔除,令 M 等于 2 ,继续向下判断;
M=2;
}
int i,j;
i=M;
int num=0,sum=0;
while(i<=N) //让 i 从 M 到 N 遍历;
{
int isprime=1; //用于判断素数的依据是 isprime=1 ,若初始的 i 值是 1 ,则不进入循环,会直接被判为素数,所以要将 1 剔除;
for(j=2;j<i;j++) //将 i 分别对 2 到 i-1 的数进行取余,素数只能整除 1 和自身;
{
if(i%j==0){ //判断余数是否为 0 ;
isprime=0; //当不是素数时, 令 isprime=0 ,并跳出for循环;
break;
}
}
if(isprime){ //for循环结束后,再次对 isprime 进行判断,当是素数时,即 isprime=1 . 计数并求和;
num++;
sum+=i;
}
i++;
}
printf("%d %d\n",num,sum);
return 0;
}
运行结果: