素数とは、2 つの数値自体の合計によってのみ割り算できる数値です。数値の因数は、数値を割る数値です。
最初の 10 個の素数のリストは 2,3,5,7,11,13,17,23,29,31 です。
素数以外の数は合成数です。合成数とは、2 つ以上の数で割り切れる数です。
これが素数であり合成数である場合、1 はそれ自体でしか割り切れないため、素数でも合成数でもありません。
数値が素数か合成かを確認する方法 数値が素数かどうかを確認するには、2 つの条件を確認する必要があります。
1) 1 より大きい整数である必要があります。
2) 要素は 2 つだけ、1 つと数値そのものでなければなりません。
これら 2 つの条件が満たされる場合、その数値は素数であると言えます。
私たちのプログラムでは、その数値をその数値より小さいすべての数値で割った値をチェックします。指定された数より小さい数がその数で割り切れる場合、その数は素数ではありません。それ以外の場合はプライムです。
例として 2 つの数値を取り上げ、この手順を使用してそれらが素数であるかどうかを確認してみましょう。
Input − Number1 − 42 Output − 42 is not a prime number
ロジック - 42 を 1 より大きく 42 未満のすべての数値で割ります。したがって、
42/2 = 21、つまり 42 は 2 で割り切れます。これは、42 は別の数で割り切れるため、素数ではないことを意味します。
Input − Number2 − 7 Output − 7 is a prime number
ロジック - 7 を 1 より大きく 7 より小さいすべての数値で割ります。したがって、
7 は 2 で割り切れないため、コードは次の数値をチェックします。つまり、3
7 は 3 で割り切れないため、コードは次の数値、つまり 4
# # をチェックします。 #7 は 4 で割り切れないため、コードは次の数値をチェックします。つまり、5>
7 は 5 で割り切れないため、コードは次の数値をチェックします。つまり、67 は割り切れません。 6 で割り切れるということは、7 は 1 でしか割り切れないことを意味し、7 は 7 が素数であることを意味します。 上記のロジックを見てください。この数値が 1000 プラスであっても 100000 プラスであっても、プログラムは for ループ内で複数回反復され、この方法では多くの計算時間がかかります。したがって、反復回数を減らすためには、より良い方法でなければなりません。 これに対する最適化された解決策は、ループの半分だけを実行することです。これは、数値が 77 の場合、ループは 38 までしか実行されないことを意味します。これにより必要な反復回数が減るため、このアルゴリズムを使用してプログラムを作成します。 例#include <stdio.h> int main() { int num = 33, flag = 0; for(int i=2 ; i < num/2 ; i++) { if(num%i == 0) { printf("%d is not a prime number", num); flag = 1; break; } } if(flag == 0) { printf("%d is a prime number", num); } }
33 is a prime number
以上が数値が素数かどうかを確認する C プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。