题目1163:素数
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:13186
解决:4618
-
题目描述:
-
输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。
-
输入:
-
输入有多组数据。
每组一行,输入n。
-
输出:
-
输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。
-
样例输入:
-
100
-
样例输出:
-
11 31 41 61 71
-
来源:
- 2008年北京航空航天大学计算机研究生机试真题
-
#include <cstdio> #include <cstring> int prime[10005];//如果判定为素数则值为 0,其他非素数都会被一次置1 int main(){memset(prime,0,sizeof(prime));prime[0]=1;prime[1]=1;int a=2;while(a<10001){if(prime[a]==0){for(int i=2;;i++){int temp=a*i;if(temp>10000)break;prime[temp]=1;}} a++;}int n,flag;while(scanf("%d",&n)!=EOF){flag=0;for(int i=1;i<n;i++){if(prime[i]==0&&i%10==1&&flag==0){printf("%d",i);flag++;}else if(prime[i]==0&&i%10==1&&flag!=0){printf(" %d",i);} }if(flag==0){printf("-1");}printf("\n");} return 0; }
素数筛法。 -