题目内容:
我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。
现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入格式:
两个整数,第一个表示n,第二个表示m。
输出格式:
一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入样例:
2 4
输出样例:
15
时间限制:500ms内存限制:32000kb
实现思路:
- 素数是指:除了1和它本身以外不再有其他因数的自然数;
- 可以通过定义一个flag标记来判断是否是素数;
- 外层循环数字本身,内层循环该数字可能存在的因数;
- 内层循环2到数字本身(包括本身),如果其中能取余为0,说明还存在其他因数,则不为素数,跳出内存循环;
- 如果素数标记为素数,则素数个数加一,且素数进行累加和;
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int n = 0;
int m = 0;
scanf_s("%d %d", &n, &m);
int count = 0;//记录素数个数
int num = 2;
int sum = 0;//记录素数总和
while (count < m)
{
int isprime = 1;//素数的标志
for (int i = 2; i < num; i++)
{
if (num % i == 0)
{
isprime = 0;
break;
}
}
if (isprime == 1)
{
count++;
if (count >= n)
{
sum += num;
}
}
num++;
}
printf("%d", sum);
return 0;
}