Problem A: 统计素数并求和

输入一个正整数 repeat (0<repeat<10),做repeat 次下列运算:
输入 2 个正整数m 和n(1<=m,n<=500),统计并输出m 和n 之间的素数的个数以及这些素
数的和(素数就是只能被1 和自身整除的正整数,1 不是素数,2 是素数)。

#include <stdio.h>

int main()
{
int repeat,i;
scanf("%d",&repeat);
for(i=0;i<repeat;i++)
{
int  n,m,sum,count,j;
sum=count=0;
scanf("%d%d",&m,&n);
for(int x =m;x <n;x++)
{
for(j=2;j <x;j++)
    {
    if(x%j==0)
    {
break;
    }
    }if(j==x)
    sum +=x;//此时跳出的x为第二个for 循环种的1个x,所以,可以直接用sum +=x
count ++;
    }
}
printf("count=%d,sum=%d\n",count,sum);
}
return 0;

}

思路:

1、输入m、n后要对m-n区间里的数进行判断,所以要遍历m-n中所有的数(利用for循环进行遍历与判断),并在遍历的同时,对这个数是否为素数进行判断

2、如何判断素数并加和:利用合数的因子除了自己还有其他的数的性质,对于x如何跳出循环的方式进行判断

跳出循环的两种方式:1、最终j=x,说明到循环最后,还是不满足if(x%j==0)的条件-->是素数;

2、通过if(x%j==0)break;-->合数。

通过跳出循环的不同方式对x进行判断。

猜你喜欢

转载自blog.csdn.net/xx1257gd/article/details/81057173