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