Рассмотрим псевдокод:
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'
}
Мне нужно изменить этот псевдокод таким образом, чтобы в нем не было петель, поэтому я должен избавиться от него, пока l oop вверху. Я рассмотрел несколько примеров, а именно числа {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
является идеальным квадратом, а затем показывает его квадрат root. Для чисел, которые не являются идеальными квадратами, он выводит N
.
Это означает, что я должен изменить приведенный выше псевдокод так, чтобы он проверял, является ли число n
идеальным квадратом или нет. Но как я могу сделать это без использования ЛЮБЫХ циклов? Тем более, что это псевдокод, поэтому у меня нет такой функции, как sqrt(n)
. Я получил это упражнение из источника, у которого обычно есть простые проблемы, поэтому это должно быть что-то простое, чего я просто не вижу, ничего сложного. Но я не вижу никакого способа использования данных переменных или создания новых, чтобы проверить, является ли данное число n
идеальным квадратом без каких-либо петель.