结果不正确
要在内层for循环确定所有数都不能整除才进行累加,而且终止条件为i<M
,你现在的效果应该是对所有奇数进行了求和
#include<cstdio>
#include<cmath>
int main()
{
int m,n,a = 0,sum = 0;
scanf("%d%d",&m,&n);
while(m<n)
{
for(int i = 2;i <= sqrt(m);i++)
if(m % i == 0)
{
break;
}
else
{
a++;
sum += m;
break;
}
m ++;
}
printf("%d %d",a,sum);
}
把for循环的m改成sqrt(m)就行了
代码修改如下:
#include <stdio.h>
int main()
{
int M,N,A,i,sum;
A=0;
sum = 0;
scanf("%d",&M);
scanf("%d",&N);
while(M<N)
{
for(i=2;i<M;i++) //注意是小于,不是小于等于
{
if(M%i==0)
break;
}
if(i==M) //是素数,注意这里的写法
{
A++;
sum = sum + M;
}
M++;
}
printf("%d %d",A,sum);
return 0;
}