素数の概念
素数とも呼ばれる素数は、1 と整数自体を除く他の自然数では割り切れない 1 より大きい自然数を指します (1 とその整数の 2 つの因数のみを持つ数値として定義することもできます) )。
最小の素数は 2 であり、これは素数の中で唯一の偶数でもあり、他の素数はすべて奇数です。素数は無限に存在するため、最大の素数は存在しません。
1: 定義に従って解決します。
これは最も愚かな方法でもあり、効率も低くなります。
package test.ms;public class FindPrime { // 1 から 1000 までの素数を見つけます;public static void main(String[] args) { printPrime(1000);}public static void printPrime(int n){for(int i = 2; i < n ; i++){int カウント = 0;for(int j = 2 ; j<=i; j++){if(i%j==0){count++;}if(j==i & count == 1){System.out.print(i+" ");}if(count > 1){break; }}}}}
2: 平方根:
package test.ms;public class Prime { public static void main(String[] args) {for(int j = 2; j<1000; j++){if(m(j)){System.out.print(j+" ");}}}public static boolean m(int num){for(int j = 2; j<=Math.sqrt(num);j++){if(num%j == 0){return false;}}true を返します;}}
3: パターンを見つける (フォーラムのディスカッションからの抜粋)
最小の素数は 2 であり、これは素数の中で唯一の偶数でもあり、他の素数はすべて奇数です。素数は無限に存在するため、最大の素数は存在しません。
package test.ms;import java.util.ArrayList;import java.util.List;public class Primes { public static void main(String[] args) { // 素数を検索 List<Integer> primes = getPrimes(1000); / / 出力結果 for (int i = 0; i < primes.size(); i++) { Integer prime = primes.get(i); System.out.printf("%8d", prime); if (i % 10 == 9) { System.out.println() } } } /** * n 内の素数をすべて検索します* * @param n Range* * @n 内のすべての素数を返す */ private static List<Integer> getPrimes(int n) { List<Integer> result = new ArrayList<Integer>(); result.add(2); for (int i = 3; i <= n; i += 2) { if (!divisible(i, result)) { result.add(i) } / ** * n が割り切れるかどうかを判定します * * @param n 判定する数値 * @param primes 素数を含むリスト * * @return n がいずれかの素数で割り切れる場合に true を返します。 */ private static boolean divisible(int n, List<Integer> primes) { for (Integer prime : primes) { if (n % prime == 0) { return true; } }
最初と 2 番目の方法は非常に簡単です。
3 番目の方法は、素数の性質を示します。すべての素数の中で、偶数は 2 だけです。
前の素数で割り切れる数値は素数ではありません。