題目連結
題意:
測資給一個100萬以內的數 N
如果它是質數
而且它的反轉也是質數
輸出 N is emirp.
如: 17,17 和 71 都是質數
如果它是但反轉不是
輸出 N is prime.
如: 23,23 是但 32 不是
如果它不是
輸出 N is not prime.
如: 18, 18不是質數
解法:
先建一個 1000000 以內的質數表
判斷它與它反轉是不是質數即可
如果它本身反轉還是自己
如果是質數,要輸出 N is prime.
程式(Java):
題意:
測資給一個100萬以內的數 N
如果它是質數
而且它的反轉也是質數
輸出 N is emirp.
如: 17,17 和 71 都是質數
如果它是但反轉不是
輸出 N is prime.
如: 23,23 是但 32 不是
如果它不是
輸出 N is not prime.
如: 18, 18不是質數
解法:
先建一個 1000000 以內的質數表
判斷它與它反轉是不是質數即可
如果它本身反轉還是自己
如果是質數,要輸出 N is prime.
程式(Java):
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.*; | |
public class Main { | |
public static void main(String args[]) { | |
Scanner sc = new Scanner(System.in); | |
boolean prime[] = new boolean[1000010]; | |
Arrays.fill(prime, true); | |
prime[1] = false; | |
for (int i = 2; i <= 1000000; i++) { | |
if (prime[i]) { | |
for (int j = i; (long)i*j <= 1000000; j++) | |
prime[i * j] = false; | |
} | |
} | |
while (sc.hasNext()) { | |
int N = sc.nextInt(); | |
System.out.print(N + " "); | |
int oN = N; | |
if (prime[N]) { | |
int rN = 0; | |
while (N > 0) { | |
rN *= 10; | |
rN += N%10; | |
N /= 10; | |
} | |
if (oN == rN) | |
System.out.println("is prime."); | |
else | |
System.out.println(prime[rN] ? "is emirp." : "is prime."); | |
} | |
else | |
System.out.println("is not prime."); | |
} | |
} | |
} |
留言
張貼留言