Как найти идеальный квадрат из набора чисел в Java? - PullRequest
0 голосов
/ 24 сентября 2019

Итак, я пытаюсь найти идеальные квадраты в наборе чисел.Я объявил необходимые переменные, добавил цикл for, добавил sqroot = Math.sqrt(num) и метод печати для вывода списка чисел.Что я не могу понять, так это как заставить программу выбрать идеальные квадраты в диапазоне чисел и найти их среднее значение

1003 * Это задание, над которым я работаю длякласс, и я застрял на этом некоторое время сейчас.Я также довольно новичок в Java, так что извините, если это глупый вопрос.Код ниже:

public class Test {

    public static void main(String[] args) {
        int num;
        double sqroot = 0;
        int sumPsq = 0; //sum variable
        int psq = 0; //counter for perfect squares
        double avg = 0;

        for(num = 101; num <= 149; num += 2){
           sqroot = Math.sqrt(num);

            if(sqroot*sqroot == num){ //Condition to find perfect squares
                psq += 1; //counting perfect squares
                sumPsq = sumPsq + num; //Find the sum of all the perfect squares

                System.out.println(num); //Print out the perfect squares
            }
        }
        avg = 1.0 * sumPsq/psq;
        System.out.println(avg);
    }

}

Это всего лишь фрагмент кода из всего назначения, поэтому, если вам нужно его больше, я с радостью его предоставлю.Спасибо!

Ответы [ 2 ]

1 голос
/ 24 сентября 2019

Идеальный квадрат - это число, которое может быть выражено как произведение двух равных целых чисел, поэтому оно должно быть int после sqrt.Если вы делаете sqroot*sqroot == num, вы просто проверяете, что sqrt работает правильно.Какой-то номер не пройдет проверку из-за этого , но обычно вы получите гораздо больше номеров, чем вы хотите.

Так что вам нужно просто проверить, что после sqrt результатом является int:

if (sqrootd % 1 == 0) { ... }

Оптимизация, которую вы можете сделать, это проверить, что число является целым числом перед sqrt.Кроме того, ваш код выглядит нормально для меня

0 голосов
/ 24 сентября 2019

Лучший способ проверить, является ли квадратный корень целым числом, которое вам понадобится при условии ниже

if ((sqroot - Math.floor(sqroot)) == 0){

вместо

if(sqroot*sqroot == num){

Метод Math.sqrt () находит квадратный кореньданного числа, и метод floor () находит наибольшее (ближайшая к положительной бесконечности) значение с плавающей точкой, которое меньше или равно аргументу (здесь значение квадратного корня, возвращаемого методом sqrt ()) и равно математическому целому числу.

Затем мы вычисляем разницу между этими двумя, чтобы проверить, равна ли она нулю.Для идеального квадратного числа эта разница всегда равна нулю.Причина в том, что квадратный корень из идеального квадратного числа является целым числом.

ссылка

...