当前位置: 代码迷 >> 综合 >> 题目1163:素数 九度OJ
  详细解决方案

题目1163:素数 九度OJ

热度:59   发布时间:2023-09-24 06:40:54.0
题目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;
}

素数筛法。