AOJ1276 Prime Gap
問題リンク Prime Gap
- 概要
整数kのprime gapとは、k以下の最大の素数をp、k以上の最小の素数をp+nとしたときのnである。与えられる整数kのprime gapを答えよ。
2 <= k <= 1299709
- 解法
エラトステネスの篩で1299709までの素数表を作り、kから出発して、pとp+nに相当するものを見つけます。
- ソース
import java.util.Arrays; import java.util.Scanner; //Prime Gap public class AOJ1276 { void run(){ int N = 1299709; boolean[] p = new boolean[N+1]; Arrays.fill(p, true); p[0]=p[1]=true; for(int i=2;i<=N;i++)if(p[i])for(int j=i+i;j<=N;j+=i)p[j]=false; Scanner sc = new Scanner(System.in); for(;;){ int k = sc.nextInt(); if(k==0)break; int l = k, r = k; while(!p[l])l--; while(!p[r])r++; System.out.println(r-l); } } public static void main(String[] args) { new AOJ1276().run(); } }