paizaラーニングのレベルアップ問題集「素数メニュー」からの出典です。
paiza.jp
Javaによる「素数メニュー」問題集: 素数大学と、それらの提出コードの解答例です。
僕が作成、提出したコードは、以下のとおりです。
・STEP: 1 グロタンディーク素数
/* Javaによる「素数メニュー」問題集: 素数大学 STEP: 1 グロタンディーク素数 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ public class Main { public static void main(String[] args) { int n = 57; if(n < 2){ System.out.println("NO"); return; } for(int i = 2; i < n; i++){ if(n%i == 0){ System.out.println("NO"); return; } } System.out.println("YES"); } }
・STEP: 2 素数判定
/* Javaによる「素数メニュー」問題集: 素数大学 STEP: 2 素数判定 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); if(n < 2){ System.out.println("NO"); return; } for(int i = 2; i < n; i++){ if(n%i == 0){ System.out.println("NO"); return; } } System.out.println("YES"); } }
・STEP: 3 大きな数の素数判定
/* Javaによる「素数メニュー」問題集: 素数大学 STEP: 3 大きな数の素数判定 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long n = sc.nextLong(); if(n < 2){ System.out.println("NO"); return; } if(n == 2){ System.out.println("YES"); return; } if(n%2 == 0){ System.out.println("NO"); return; } for(int i = 3; i <= Math.sqrt(n); i+=2){ if(n%i == 0){ System.out.println("NO"); return; } } System.out.println("YES"); } }
・STEP: 4 エラトステネスの篩
/* Javaによる「素数メニュー」問題集: 素数大学 STEP: 4 エラトステネスの篩 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); boolean[] is_prime = new boolean[n+1]; is_prime[0] = false; is_prime[1] = false; for(int i = 2; i <= n; i++) is_prime[i] = true; for(int i = 2; i <= n; i++){ if(is_prime[i] == true){ for(int j = 2; i*j <= n; j++) is_prime[i*j] = false; } } if(is_prime[n]){ System.out.print("YES"); }else{ System.out.print("NO"); } } }
・STEP: 5 フェルマーテスト
/* Javaによる「素数メニュー」問題集: 素数大学 STEP: 5 フェルマーテスト https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int a = 2; int farmat = 1; if(n%a == 0){ System.out.println("NO"); return; } for(int i = 0; i < n-1; i++){ farmat = farmat*a; farmat = farmat%n; } if(farmat == 1){ System.out.println("YES"); }else{ System.out.println("NO"); } } }
・FINAL問題: 素数大学
/* Javaによる「素数メニュー」問題集: 素数大学 FINAL問題: 素数大学 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for(int i = 0; i < n; i++){ int a = sc.nextInt(); if(a < 2){ System.out.println("failure"); }else if(a == 2){ System.out.println("pass"); }else if(a%2 == 0){ System.out.println("failure"); }else{ int cnt = 0; for(int j = 3; j <= Math.sqrt(a); j+=2){ if(a%j == 0){ cnt++; break; } } if(cnt == 0){ System.out.println("pass"); }else{ System.out.println("failure"); } } } } }
paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。