1. 程式人生 > >計算機考研複試真題 素數

計算機考研複試真題 素數

題目描述

輸入一個整數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; }