1.源代码
#include <stdio.h>
int count=0;
int prime (int x)
{
int i;
int t=0;
for(i=2;i<=x/2;i++){
if(x%i==0){
break;
}
}
if(i>x/2 && x!=1){
count++;
t=x;
}
return t;
}
int main()
{
int m,n,i;
int sum=0;
scanf("%d,%d",&m,&n);
for(i=m;i<=n;i++){
sum+=prime(i);
}
printf("count=%d,sum=%d",count,sum);
return 0;
}
2.代码思路
这段代码的功能是从标准输入读取两个整数m和n,然后计算m到n之间的所有素数的个数和总和,最后在标准输出打印出结果。
这段代码的逻辑是:
- 首先,定义了五个变量,其中i,m,n,t,sum是整型变量,count是全局变量,还定义了一个函数,prime,prime的功能是判断一个数是否是素数,并返回该数或0。
- 然后,进入main函数,使用scanf函数从标准输入读取两个整数,并赋值给m和n变量,这两个变量表示要计算的素数的范围。
- 接着,使用一个for循环,从i=m到i<=n,每次循环执行以下操作:
- 调用prime函数,将i作为参数传递给prime函数,prime函数返回i或0,将这个返回值加到sum变量上,这样就相当于计算了m到n之间的所有素数的总和。
- 最后,使用printf函数打印出count和sum的值,以及一个换行符,这样就在标准输出显示了m到n之间的所有素数的个数和总和。
- 然后,进入prime函数,使用一个for循环,从i=2到i<=x/2,每次循环执行以下操作:
- 使用一个if语句,判断x是否能被i整除,如果是,就使用break语句跳出循环,这样就相当于检查了x是否有除了1和自身之外的因数。
- 接着,使用另一个if语句,判断i是否大于x/2且x是否不等于1,如果是,就将count变量加一,并将x赋值给t变量,这样就相当于判断了x是否是素数,并记录了素数的个数和值。
- 最后,返回t的值,这个值可能是x或0,分别表示x是或不是素数。
下面是这段代码的输出样例,假设输入的数据是:
10,20
那么输出的结果是:
count=4,sum=60