[pat]數素數
阿新 • • 發佈:2018-11-01
時間限制:1000 ms 記憶體限制 32768 KB 程式碼長度限制 100 KB 判斷程式 Standard (來自 小小)
題目描述
令Pi表示第i個素數。現任給兩個正整數M <= N <= 10000,請輸出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<stdlib.h> #include<math.h> //判斷一個數是否為素數方法一 int p(int y) { int tem =sqrt(y),flag = 1; for(int i=2; i<=tem; i++) { if(y%i == 0) { flag=0; break; } } return flag; } //判斷一個數是否為素數方法二 int p2(int num) { if(num == 2||num == 3) return 1; if(num%6 != 1&&num%6!=5 ) return 0; int tem=sqrt(num); for(int i=5;i<=tem;i+=6) { if(num%i==0||num%(i+2)==0) { return 0; } } return 1; } //按格式輸出 void dis(int M,int N) { int i=2,counts=0; while(1) { if(p(i)) { counts++; if(counts>=M&&counts<=N) { if((counts-M+1)%10==0&&counts!= M) { printf("%d\n",i); } else if(counts == N) { printf("%d",i); break; } else { printf("%d ",i); } } } i++; } } int main() { int M,N; scanf("%d%d",&M,&N); dis(M,N); return 0; }