题目1163:素数
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:10604
解决:3678
-
题目描述:
-
输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。
-
输入:
-
输入有多组数据。
每组一行,输入n。
-
输出:
-
输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。
-
样例输入:
-
100
-
样例输出:
-
11 31 41 61 71
#include "stdafx.h" int prime[10001]; bool mark[10001]; int primesize; void init(){ for (int i = 0; i < 10001; i++) { mark[i]=false; //初始化标记数组 } primesize=0; for(int i=2;i<=10000;i++){ if (mark[i]==true) //如果被标记了,则不是素数,执行下一次循环 continue; prime[primesize++]=i;//将素数存入数组里面 for (int j = i*i; j <=10000; j+=i)//如果这个数字是素数,那么将其倍数的所有数字都标记为非负数 { mark[j]=true; } } } int main(){ int n; init(); while (scanf("%d",&n)) {bool IsOutput=false; for (int i = 0; i < primesize; i++) { if (prime[i]<=n&&prime[i]%10==1) {if (!IsOutput){ IsOutput=true; printf ("%d",prime[i]); } else printf(" %d",prime[i]); } } if (!IsOutput) printf("-1\n"); } return 0; }