計算機考研複試真題 素數
阿新 • • 發佈:2018-11-19
題目描述
輸入一個整數n(2<=n<=10000),要求輸出所有從1到這個整數之間(不包括1和這個整數)個位為1的素數,如果沒有則輸出-1。輸入描述:
輸入有多組資料。 每組一行,輸入n。
輸出描述:
輸出所有從1到這個整數之間(不包括1和這個整數)個位為1的素數(素數之間用空格隔開,最後一個素數後面沒有空格),如果沒有則輸出-1。示例1
輸入
100
輸出
11 31 41 61 71
//計算機考研複試真題 素數 /* 程式設計思想:先求出每個數的素數,存入向量,然後判斷輸出即可。 */ //程式實現: #include<iostream> #include<vector> using namespace std; vector<int> prime(int n){ //求一個數的所有素數 int i,j; vector<int>v; for(i=10;i<n;++i){ //因為輸出不包括1和這個整數,且個位為1的素數,故從10開始。 boolflag=false; for(j=2;j<i;++j){ //找10到n之間的素數 if(i%j==0){ //能被整除則一定不是素數 flag=true; break; } } if(flag==false) v.push_back(i); } if(v.size()==0) //如果沒有則輸出-1 v.push_back(-1); returnv; } int main(){ int n; while(cin>>n){ vector<int>v1; v1=prime(n); bool flag=false; for(int i=0;i<v1.size()-1;++i){ //遍歷素數 if(v1[i]%10==1){ //滿足條件 flag=true; cout<<v1[i]<<" "; } } if(v1[v1.size()-1]%10==1){ flag=true; cout<<v1[v1.size()-1]<<endl; } if(flag==false) //不滿足條件 cout<<-1<<endl; } return 0; }