您的位置:首页 > 编程语言 > C语言/C++

PAT Basic 1013. 数素数 (20)(C语言实现)

2017-05-18 23:44 786 查看

题目

令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。

输入格式

输入在一行中给出M和N,其间以空格分隔。

输出格式

输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。

输入样例
5 27
输出样例
11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103

思路

也没有什么难度,注意下什么时候开始输出,什么时候换行。

1007. 素数对猜想 (20) (C语言实现)一样,验证素数的时候,利用前面已经算出的素数,能够将验证次数降到最低。

代码

最新代码@github,欢迎交流 ^_^

#include <math.h>
#include <stdio.h>
int main()
{

int M, N;
scanf("%d %d", &M, &N);
int primes[10000];

for(int n = 2, count = 0; count < N; n++)
{
int iprime = 1;
for(int j = 0; count > 0 && primes[j] <= sqrt(n); j++)
if(n % primes[j] == 0)
iprime = 0;
if(iprime) primes[count++] = n;
}

for(int i = M; i < N; i++)
{
printf("%d", primes[i - 1]);
printf((i - M + 1) % 10 ? " " : "\n");
}
printf("%d", primes[N - 1]);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: