杨老师正在上《离散数学》课程的“数论”内容,讲授素数的知识。素数又称为质数。一个大于1的整数p是素数,当且仅当p只能被1和自身整除。很显然,2是最小的素数。他想设计一个程序,可以计算整数 m 和 n 之间的所有素数之和。
输入格式:
输入两个整数 m,n, 题目不保证 m≤n,但是保证 0≤m≤20000,0≤n≤20000。
输出格式:
输出 m 和 n 之间的所有素数的和。
输入样例01:
在这里给出一组输入。例如:
0 10
输出样例01:
在这里给出相应的输出。例如:
17
输入样例02:
在这里给出一组输入。例如:
100 200
输出样例02:
在这里给出相应的输出。例如:
3167
代码如下:
#include <stdio.h>
#include <math.h>
int prime_numble(int x)//定义函数,判断一个数是否为素数
{
int i , b = 1;
int k;
k = (int)sqrt((double)x);//在2——√x上筛选可以减少运算量
for (i = 2; i <= k; i++)
{
if (x % i == 0)
{
b = 0;
}
}
return b;
}
int main()
{
int m, n;
int j, a, sum = 0;
scanf("%d %d",&m,&n);
if (m > n)//比较m,n的大小;并让m<n
{
a = m;
m = n;
n = a;
}
if (m < 2)
m = 2;//素数一定>=2
for (j = m; j <= n; j++)
{
if (prime_numble(j) == 1)
sum += j;
}
printf("%d",sum);
return 0;
}
如有不妥之处,欢迎各位大佬指正!