题目描述
输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。
输入描述:
输入有多组数据。 每组一行,输入n。
输出描述:
输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。
示例1
输入
100
输出
11 31 41 61 71
满分代码:
#include<bits/stdc++.h>
using namespace std;
const int N=10000;
int prime[N],vst[N];
int n;
int cnt,sum;
void suShu(int n){
memset(vst,0,sizeof(vst));
prime[1]=2;
prime[2]=3;
int val=5,flag;
cnt=2;
sum=0;
while(val<n){
flag=1;
for(int i=1;i<=cnt;i++){
if(val%prime[i]==0){
flag=0;
break;
}
}
if(flag){
cnt++;
prime[cnt]=val;
if(val%10==1){
vst[cnt]=1;
sum++;
}
}
val+=2;
}
}
int main(){
while(scanf("%d",&n)==1){
suShu(n);
//cout<<"cnt="<<cnt<<" "<<"sum="<<sum<<endl;
if(sum==0) c