演算法筆記-問題 A: 素數
阿新 • • 發佈:2021-01-16
技術標籤:演算法
問題 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; }