//1013 数素数 (20)(20 分)
//令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
C:
#include <stdio.h>
#include <math.h>
int main(int argc, const char * argv[]) {
int prime[10000];
int M,N;
scanf("%d %d",&M,&N);//输入素数数量的最小值和最大值
int primenum = 0;
for (int i = 2; primenum< N; i++) {//只要素数没有达到数量最大值N,就继续找素数
int flag = 1;
for (int j = 0;primenum > 0 && prime[j] <= sqrt(i); j++) {//如果不加primenum > 0这个条件就会浮点错误
if (i % prime[j] == 0) {
flag = 0;
}
}
if (flag == 1) {
prime[primenum++] = i;
}
}
for (int i = M; i < N; i++) {//10个数字一行,最后一个数字单独输出
printf("%d",prime[i - 1]);
printf((i - M + 1) % 10 ? " ":"\n");
}
printf("%d",prime[N-1]);
return 0;
}
为何必须加上primenum>0这个条件,不加的话就会浮点错误?
在xcode中无错误无警告,也不影响结果,但是在PTA平台会报错。
网友评论