• 締切済み

【C→JAVA】素数の組の数を求めるプログラム

以下はC言語のプログラムです。 標準入力に正の偶数値 n(2≦n≦10,000) を入力すると足して n になる素数の組の数を求め、 標準出力に出力するプログラムなのですが、 これをJAVA用のプログラムに置き換えるとすると どのようなプログラムになるのでしょうか? よろしくお願いいたします。 #include <stdio.h> #include <math.h> //Compiler version gcc 6.3.0 #define N 10000 int primes[N + 1] = {0}; void sieve(int); int main() { int n,count = 0; sieve(N); scanf("%d",&n); for (int i = 1;i <= n / 2 + 1;i++) { for (int j = i + 1;j < n;j++) { if (primes[i] && primes[j] && i + j == n) { count++; } } } printf("%d\n",count); return 0; } void sieve(int n) { int limit = (int)sqrt(n) + 1; for (int i = 2;i <= n;i++) { primes[i] = 1; } for (int i = 2;i < limit;i++) { if (primes[i]) { for (int j = 2; i * j <= n;j++) { primes[i * j] = 0; } } } }

みんなの回答

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

import java.util.Scanner; public class Main { static final int N = 10000; static int[] primes = new int[N + 1]; public static void main(String[] args) { sieve(N); int count = 0; Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for (int i = 1; i <= n / 2 + 1; i++) { for (int j = i + 1; j < n; j++) { if (primes[i] == 1 && primes[j] == 1 && i + j == n) { count++; } } } System.out.println(count); } static void sieve(int n) { int limit = (int)Math.sqrt(n) + 1; for (int i = 1; i <= n; i++) { primes[i] = 1; } for (int i = 2; i < limit; i++) { if (primes[i] == 1) { for (int j = 2; i * j <= n; j++) { primes[i * j] = 0; } } } } }