杨老师正在上《离散数学》课程的“数论”内容,讲授素数的知识。素数又称为质数。一个大于1的整数p是素数,当且仅当p只能被1和自身整除。很显然,2是最小的素数。他想设计一个程序,可以计算整数 m 和 n 之间的所有素数之和。
输入格式:
输入两个整数 m,n, 题目不保证 m≤n,但是保证 0≤m≤20000,0≤n≤20000。
输出格式:
输出 m 和 n 之间的所有素数的和。
输入样例01:
在这里给出一组输入。例如:
10 0
输出样例01:
在这里给出相应的输出。例如:
17
输入样例02:
在这里给出一组输入。例如:
100 200
输出样例02:
在这里给出相应的输出。例如:
3167
#include<stdio.h>
#include<math.h>
int main()
{int sushu(int i);
int m,n,a,i,s=0;
scanf("%d%d",&m,&n);
if(m>n)//排序让小的在前。
{
a=m;
m=n;
n=a;
}
for(i=m;i<=n;i++)
{
if(sushu(i)==1)//为1时是素数计入求和
s+=i;
}
printf("%d",s);
return 0;
}
int sushu(int i)//函数初始为1(真),若不是素数输出0(假)
{
int j,h=1;
if(i==1)//单独考虑1,最小素数为2。
{
h=0;
return h;
}
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
h=0;
}
return h;
}