MOOC翁帆老师c语言的作业
题目内容:
我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。
现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入格式:
两个整数,第一个表示n,第二个表示m。
输出格式:
一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入样例:
2 4
输出样例:
15
思考:
1.如何找到素数:两个循环解决
2.既然要求第几个素数到第几个素数的和,就必须知道是第几个素数,用m来记录
3.写出找到第k个素数的函数,问题解决
#include <stdio.h>
#include <stdlib.h>int zhaosushu(int n);
int main()
{
int i,m,n,sum;
scanf("%d %d",&m,&n);
i=m;
sum=0;
while(m<=i&&i<=n)
{
sum+=zhaosushu(i);
i++;
}
printf("%d",sum);
return 0;
}
int zhaosushu(int n)
{
int i,j,m,flag;
m=1;
flag=0;
if(n==1)
return 2;
else
{
for(i=3;;i++)
{
flag=0; //第一次写的时候没有重置flag导致无限continue
for(j=2;j<i;j++)
{
if(i%j==0)
{flag=1;break;}
}
if(flag==1)
continue;
else
{
m++;
if(m==n)
return i;
}
continue;
}
}
}