PAT Basic 1013
阿新 • • 發佈:2018-08-09
car out ostream end basic 正整數 code false eml
1013 數素數
令P~i~表示第i個素數。現任給兩個正整數M <= N <= 10^4^,請輸出P~M~到P~N~的所有素數。
輸入格式:
輸入在一行中給出M和N,其間以空格分隔。
輸出格式:
輸出從P~M~到P~N~的所有素數,每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
題解:這道題其實就是打素數表,輸出P~M~到P~N~的所有素數,要註意格式問題,第一次提交格式有誤有兩個測試點沒過。
代碼如下:
1 #include<iostream> 2 #include<math.h> 3 4 using namespace std; 5 6 bool f( int n) 7 { 8 if( n==1||n==0) 9 return false; 10 if( n == 2) 11 return true; 12 for( int i = 2; i <=sqrt(n); i++) 13 if( n%i == 0) 14 return false; 15 return true; 16 } 17 18 int main() 19 { 20 int m,n,k = 0,i = 2,num = 0; 21 cin>>m>>n; 22 while(k < m - 1) 23 { 24 if(f(i)) 25 k++; 26 i++; 27 } 28 while(k < n) 29 { 30 if(f(i)) 31 { 32 if(!num) 33 num = 1; 34 else 35 cout<<" "; 36 k++; 37 cout<<i; 38 if( (k+1 -m) % 10 == 0){ 39 cout<<endl; 40 num = 0; 41 } 42 } 43 i++; 44 } 45 return 0; 46 }
PAT Basic 1013