PAT (Basic Level) Practice (中文) 1013 数素数 (20 分)(C
1013 数素数 (20 分) 令 P?i表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 P?M到 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 #include #include #include int main() { int M = 0,N = 0; int cnt1 = 1,cnt2 = 0;//cnt1用来记录素数的个数;cnt2用来完成10位换行功能 scanf("%d %d",&M,&N); if (M == 1)//把2单独考虑,只有2既是偶数又是素数 { printf("2"); cnt2++; if (cnt1 == N) return 0; } int first = 0; for (int i = 3; cnt1 <= N; i+=2)//这里只考虑奇数即可 { int flag = 0; for (int j = 3; j <= (int)sqrt((double)i); j += 2)//判断是否是素数 { if (i%j == 0) { flag = 1;//非素数 break; } } if (!flag) { cnt1++; if (cnt1 >= M && cnt1 <= N)//把第M~第N个素数打印出来,并控制打印格式 { cnt2++; if (cnt2 == 1) printf("%d",i); else if (cnt2 == 10) { printf(" %dn",i); cnt2 = 0; } else printf(" %d",i); } } } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |