计算机考研复试真题 素数
题目描述
输入一个整数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开始。 bool flag=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); return v; } 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; }