Используйте метод квадратного корня Java Math для вычисления квадратного корня от 1 до 1000. Затем выведите только целые числа

Используйте метод квадратного корня Java Math для вычисления квадратного корня от 1 до 1000. Выведите только целые числа. Не начинайте с вычисления квадратов, а затем распечатывая квадратный корень этого числа. Рассчитайте все квадратные корни и определите, являются ли они целыми числами.

Я посмотрел несколько ответов, которые, казалось, танцевали вокруг решения, но ни один из них не был таким лаконичным. Вот что у меня так далеко.

public class Assignment9
{
    public static void main(String[] args)
    {
        double root = 1;
        double sqrt = Math.sqrt(root);

        do
        {
            if(sqrt % 1 == 0)
            {
                System.out.printf("%.0f\t%.0f%n", root, Math.sqrt(root));
                root++;
            }
        }
        while(root <= 1000);
    }
}

Выходные данные печатают квадратные корни, но продолжают округлять каждое число. Я хочу распечатать только одно число на идеальный квадрат (например, 1 1, 4 2, 9 3 и т. Д.). Я понимаю вопрос, но каждый раз, когда я запускаю программу, я получаю следующее:

     1 1
     2 1
     3 2
     4 2
     5 2
     6 2
     7 3
     8 3
     9 3
     10 3
     ...
     1000 32

2 ответа

Решение

Вы не обновляете значение sqrt. Это всегда просто 1, и, следовательно, sqrt % 1 всегда 0.

Поскольку это, очевидно, задание, я бы лучше дал несколько советов вместо решения.

Важные моменты для размышления:

  • Думать о том, как sqrt обновляется в цикле.
  • Всякий раз, когда sqrt % 1 == 0 ложно, что происходит с root (и как это влияет на цикл?)

Незначительные баллы:

  • Вы действительно нуждаетесь root быть двойником?
Другие вопросы по тегам