ええと、私はその言語を知りませんが、かなり読みやすいようです。最初の問題は次の行です。
if (primenum / primenum) = 1 or primenum / 1 = 0 then
これは、1 で割った値が 1 であるか、 1 でprimenum
割った値が 0 であるかを確認するためのテストです。最初の条件は常に真であるため、アルゴリズムはすべての整数が素数であると報告します。primenum
primenum
素数の定義を思い出してみましょう。n
ちょうど 2 つの異なる自然数約数を持つ自然数は素数です。これは、 が素数であるかどうかをチェックして確認するには、およびそれ自体を除いてn
他の除数がないことを検証する必要があることを意味します (暗黙のうちに と等しくなることはできないことに注意してください。これを行うには、およびを除外すること自体の除数となる可能性のあるすべての数値を考慮し、それらのいずれかが を除算するかどうかを確認します。これは、これらの数値のいずれかが均等に分割されているかどうかを確認するまでループすることを意味します。~の範囲の自然数n
1
n
n
1
1
1
n
1
n
n
2
n - 1
n
2
n - 1
素数であることを無効にすることができる唯一の可能な数ですn
。
したがって、数値が素数かどうかのテストを実装する最も単純な方法は次のとおりです。数値を入力として受け入れますn
。n
次に、が より小さいかどうかを確認します2
。だとすれば素数にはなりません。次に、からループ2
しn - 1
ます。ループ変数を呼び出しますk
。等分( ) にあるものがないかどうかk
を確認します。そのような がある場合、素数にすることはできず、ループから抜け出すことができます。それ以外の場合、ループが中断せずに終了する場合は素数です。したがって、疑似コードでは2
n - 1
n
if n mod k = 0
k
n
n
integer n
get n
boolean flag
if n < 2
flag = false
else
flag = true
for k = 2 to n - 1
if n mod k = 0
flag = false
break
if flag
print "prime"
else
print "not prime"
さて、あなたのコードについてのちょっとしたコメントです。入力に名前を付けないでくださいprimenum
。primenum
あなたのコードの読者は、あなたがそのように名前を付けたので、それが実際には素数であると考えるかもしれません. ここでは、次のような名前valueToTest
が強く推奨されます。