0

疑似コードを考えてみましょう:

read n (non-zero natural number)
x <- 1
y <- n
d <- 2
while x < y
{
    if n % d = 0
    { 
        x <- d
        y <- [n / d]

    }

    d <- d + 1

}

if x = y
{
    write 'D', x
}

else
{
    write 'N'
}

ループがないようにこの疑似コードを変更する必要があるため、先頭の while ループを削除する必要があります。私はいくつかの例を調べました。つまり、数字と{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100}コードの結果N、数字が表示され、その後にそれぞれの平方根が続きます(それぞれ)。{2, 3, 5, 6, 7, 8}{1, 4, 9, 100}D{1, 2, 3, 10}

Dしたがって、コードは が完全な正方形の場合にのみ出力されn、その平方根が表示されると結論付けました。完全平方でない数については、 を出力しますN

つまり、数値nが完全な二乗であるかどうかをチェックするように、上記の疑似コードを変更する必要があります。しかし、ANY ループを使用せずにそれを行うにはどうすればよいでしょうか? 特にこれは疑似コードなので、のような関数はありませんsqrt(n)。この演習は、通常は単純な問題を抱えている情報源から得たものなので、私にはわからない単純なものであり、複雑なことは何もありません。nしかし、指定された変数を使用したり、新しい変数を作成して、指定された数値がループのない完全な正方形であるかどうかを確認したりする方法がわかりません。

4

1 に答える 1