1. 程式人生 > 其它 >演算法筆記-問題 A: 素數

演算法筆記-問題 A: 素數

技術標籤:演算法

問題 A: 素數

題目描述

輸入一個整數n(2<=n<=10000),要求輸出所有從1到這個整數之間(不包括1和這個整數)個位為1的素數,如果沒有則輸出-1。

輸入

輸入有多組資料。
每組一行,輸入n。

輸出

輸出所有從1到這個整數之間(不包括1和這個整數)個位為1的素數(素數之間用空格隔開,最後一個素數後面沒有空格),如果沒有則輸出-1。

樣例輸入Copy

70

樣例輸出 Copy

11 31 41 61

程式碼:

#include <bits/stdc++.h>

using namespace std;

int main() {
    int n;
    while(scanf("%d", &n)!=EOF){
        bool p[n + 10];
        memset(p, 0, sizeof(p));
        int prime[n + 10];
        int num = 0;
        for(int i=2; i<n; i++){
            if(p[i]==false){
                prime[num++] = i;
                for(int j=i+i; j<n; j+=i)
                    p[j] = true;
            }
        }
        int flag = 0;
        int temp = 0;
        for(int i=0; i<num; i++){
            if(prime[i]%10==1){
                temp = prime[i];
                flag = 1;
            }
        }
        for(int i=0; i<num-1; i++){
            if(prime[i]%10==1&&prime[i]!=temp){
                printf("%d ", prime[i]);
            }
        }
        if(flag == 1) printf("%d", temp);
        else printf("%d", -1);
        printf("\n");
    }
    return 0;
}