您的位置:首页 > 其它

1013. 数素数 (20)

2017-06-28 13:23 232 查看
1013. 数素数 (20)

求素数思路:

我的博客:1007. 素数对猜想 (20)

/*  coded by indere
题目:
令Pi表示第i个素数。现任给两个正整数M <= N <= 10^4,请输出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素数对猜想’思路一样来求素数,存入数组中,然后根据输入的索引值来输出答案。
注意:格式的问题。每十个为一行,最后一行的末尾不要输出‘ ’。
*/

#include<stdio.h>

#define MAXSIZE 10000

void setprimeArr(int *primeArr);                            /*求得素数数组*/
void printprimeArr(int *primeArr,int index1, int index2);   /*按索引输出素数*/

int main() {

int primeArr[MAXSIZE] = { 0 };
setprimeArr(primeArr);

int index1, index2;
scanf("%d %d", &index1, &index2);
printprimeArr(primeArr, index1-1, index2);
return 0;
}

void setprimeArr(int *primeArr) {               /*求得素数数组*/
primeArr[0] = 2;
primeArr[1] = 3;
primeArr[2] = 5;
int size = 3;
int num = 6;
int judge = 0;
while (primeArr[MAXSIZE - 1] == 0) {
for (int i = 0; i < size && primeArr[i] * primeArr[i] <= num; i++) {
if (num % primeArr[i] == 0) {       /*num不是素数*/
judge = 1;
break;
}
}
if (judge == 0) {                       /*num没有其他约数,即素数*/
primeArr[size] = num;
++size;
}
++num;
judge = 0;
}
}

void printprimeArr(int *primeArr, int index1, int index2) {     /*按索引输出素数*/
int temp = 1;
for (int i = index1; i < index2; i++) {
if (temp >= 10 || i == index2 - 1) {
printf("%d\n", primeArr[i]);
temp = 0;
}
else
printf("%d ", primeArr[i]);
temp++;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PAT C