1013 数素数 (20 分)(c语言)
生活随笔
收集整理的這篇文章主要介紹了
1013 数素数 (20 分)(c语言)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
令?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結尾無空行
#include<stdio.h> #include<math.h> #pragma warning(disable:4996) int sushu(int n); int book[107000] = { 0 }; int main() {int M, N,i=1;int Pi;scanf("%d %d", &M, &N);for (int cnt = 2; cnt <= 107000; cnt++) {//記錄所有素數if (sushu(cnt)) {book[i] = cnt;i++;}}int flag = 0;for (int cnt = M, i = 1; cnt <= N; cnt++, i++) {if (flag == 0) {printf("%d", book[cnt]);flag = 1;}else {printf(" %d", book[cnt]);}if (i % 10 == 0) {putchar('\n');flag = 0;}}return 0; } int sushu(int n) {int flag = 1;if (n == 2) {return flag;}for (int cnt = 2; cnt <= sqrt(n); cnt++) {if (n % cnt==0) {flag = 0;}}return flag; }我踩過的坑:
1.這題其實很簡單,但有一點很關鍵,數組的大小設置,這題數組設小了會爆炸,至少要15000++,
2.因為我用的是平方的做法,所以我寫的判斷素數函數當輸出的值是2的時候,要直接返回flag,(flag用來表示真假),然后還有sqrt那里不能用<,因為4的平方正好是2,那函數除不到2,就會導致4也被判定成素數了
總結
以上是生活随笔為你收集整理的1013 数素数 (20 分)(c语言)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1012 数字分类 (20 分)(c语言
- 下一篇: 1015 德才论 (25 分)(c语言)