素数判定
自然数 n が与えられる。
n が素数なら "素数"、そうでなければ "素数でない" を出力せよ。
素数とは 1 と自分自身でしか割り切れない 1 より大きい数である。
- 入力
- 1 ≤ n ≤ 1,000,000,000
- 出力
- "素数" または "素数でない"
97
素数
1
素数でない
自然数 n が与えられる。
n が素数なら "素数"、そうでなければ "素数でない" を出力せよ。
素数とは 1 と自分自身でしか割り切れない 1 より大きい数である。
97
素数
1
素数でない
実行すると、これらの行が順に input()・標準入力に渡されます(実行中に入力を求めません)。
$ 準備完了
コードを入力して解くにはパソコンで開いてください。モバイルでは問題と解答を見られます。
1 は素数ではありません — これを忘れるのがいちばん多い間違いです。
割ってみる数は i * i <= n(平方根)まで十分なので、10 億でも 3 万回ほどで終わります。
判定を関数に分けると読みやすくなります:Python def、C int is_prime(...)、Java・C# static boolean/static bool。
def is_prime(n): if n < 2: return False i = 2 while i * i <= n: if n % i == 0: return False i += 1 return True n = int(input())print("素数" if is_prime(n) else "素数でない")function isPrime(n) { if (n < 2) return false; for (let i = 2; i * i <= n; i++) if (n % i === 0) return false; return true;} const n = Number(require("fs").readFileSync(0, "utf8"));console.log(isPrime(n) ? "素数" : "素数でない");import { readFileSync } from "node:fs"; function isPrime(n: number): boolean { if (n < 2) return false; for (let i = 2; i * i <= n; i++) if (n % i === 0) return false; return true;} const n: number = Number(readFileSync(0, "utf8"));console.log(isPrime(n) ? "素数" : "素数でない");import java.util.Scanner; public class Main { static boolean isPrime(long n) { if (n < 2) return false; for (long i = 2; i * i <= n; i++) if (n % i == 0) return false; return true; } public static void main(String[] args) { long n = new Scanner(System.in).nextLong(); System.out.println(isPrime(n) ? "素数" : "素数でない"); }}using System; class Program{ static bool IsPrime(long n) { if (n < 2) return false; for (long i = 2; i * i <= n; i++) if (n % i == 0) return false; return true; } static void Main() { long n = long.Parse(Console.ReadLine()); Console.WriteLine(IsPrime(n) ? "素数" : "素数でない"); }}#include <iostream> bool isPrime(long long n) { if (n < 2) return false; for (long long i = 2; i * i <= n; i++) if (n % i == 0) return false; return true;} int main() { long long n; std::cin >> n; std::cout << (isPrime(n) ? "素数" : "素数でない") << '\n';}#include <stdio.h> int is_prime(long long n) { if (n < 2) return 0; for (long long i = 2; i * i <= n; i++) if (n % i == 0) return 0; return 1;} int main(void) { long long n; scanf("%lld", &n); puts(is_prime(n) ? "素数" : "素数でない"); return 0;}isPrime(n){ もし (n < 2) { 返す 偽; } 繰り返す (i = 2; i * i <= n; i++) { もし (n % i == 0) { 返す 偽; } } 返す 真;} n = コンソール.行読み().数に();コンソール.書く(isPrime(n) ? "素数" : "素数でない");