题目描述
输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。
输入
输入有多组数据。
每组一行,输入n。
输出
输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。
样例输入
70
样例输出
11 31 41 61
代码
#include <cstdio>
int prime[10000],pNum;
void Find_prime(int n){
bool p[10000] = {0};
pNum = 0;
for(int i=2;i<n;i++){
if(p[i] == false){
prime[pNum++] = i;
for(int j=i+i;j<n;j+=i){
p[j] = true;
}
}
}
}
int main(){
int n;
while (scanf("%d",&n) != EOF)
{
Find_prime(n);
int A[pNum],k=0;
for(int i=0;i<pNum;i++){
if(prime[i] % 10 == 1){
A[k++] = prime[i];
}
}
if(k == 0)
printf("-1\n");
else
{
for(int i=0;i<k;i++){
printf("%d",A[i]);
if(i != k-1){
printf(" ");
}
else{
printf("\n");
}
}
}
}
return 0;
}
AC