算法笔记--5.4素数

题目描述
输入一个整数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

发布了6 篇原创文章 · 获赞 1 · 访问量 142

猜你喜欢

转载自blog.csdn.net/captain_chengzi/article/details/104039571
5.4