题目内容:
我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。
现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入格式:
两个整数,第一个表示n,第二个表示m。
输出格式:
一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入样例:
2 4
输出例子:
15
整体思路:
step1:将从1~200的素数存进数组中
step2:输入m,n。找到数组中所对应的下标,对其中包含的所有素数进行求和。
我写的代码
#define _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
int arr[100] = { 0 };//创建一个数组存放得到的素数
int i;
int j;
int count = 1;
int n;
int m;
int sum = 0;
//以下将1~200所有的素数都存进了数组中
for (i = 3; i <= 200; i++)
{
for (j = 2; j <=i-1; j++)//这里不能用sqrt好奇怪
{
if (i % j == 0)
break;
}
if (j >= i)//我以前写这个代码的时候这里都不用再判断一步的,这一次竟然要我判断,很困惑。
{
arr[0] = 2;//在遍历的时候没有2,所以这里先填上
arr[count] = i;
count++;
}
}
//第n个素数到第m个素数之间所有的素数的和输出
scanf("%d%d", &n, &m);//2 4
for (count = n - 1; count <= m - 1; count++)
{
sum += arr[count];
}
printf("%d", sum);//15
return 0;
}
运行结果:
2 4
15