Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Чётное / нечётное количество делителей у числа. (https://javascript.ru/forum/misc/62464-chjotnoe-nechjotnoe-kolichestvo-delitelejj-u-chisla.html)

Alexander Belov 12.04.2016 10:36

Чётное / нечётное количество делителей у числа.
 
Привет!

Пытаюсь решить задачу:
функция принимает в качестве аргумента число и возвращает количество всех его делителей - чётное или нечётное.

function check ( num ){

var b;

+b <= 3;

var a = Math.pow( 2, b );

var d;

+d <= 1;

var c = Math.pow( 3, d );
 
  
num = ( (Math.pow(2 ,3) * 3) / (a *c) );

num % 2 == 0? alert ( "Чётное") :alert( "Нечётное" );

}

check ( 134 )


Код писал, основываясь на разделе Why this works

Ожидаемым образом функция не работает. Консоль не показывает никаких ошибок.
Прошу помочь решить эту задачу.

рони 12.04.2016 12:06

Цитата:

Сообщение от Alexander Belov
возвращает количество всех его делителей

это что?

Alexander Belov 12.04.2016 12:15

рони,
Например, число 10, его делители 1, 2, 5, 10 - всего четыре, чётное количество.
Число 9, его делители 1, 3, 9 - всего три, нечётное количество.

nerv_ 12.04.2016 12:34

https://ru.wikipedia.org/wiki/Кат... изации
https://ru.wikipedia.org/wiki/Мет...B5.D1.80.D1.8B
http://algolist.manual.ru/maths/teornum/factor/

Яростный Меч 14.04.2016 14:21

Если надо только выяснить, четное это количество, или нет - просто проверь, является ли число квадратом. Возьми корень, проверь что он целочисленный

Alexander Belov 14.04.2016 23:58

Яростный Меч,

Если Math.sqrt(num) % 1 === 0, то число является квадратом.

У квадрата, насколько я понимаю, всегда будет 3 делителя.
А как остальные числа проверять?

Яростный Меч 15.04.2016 10:02

Alexander Belov,
У квадрата нечетное количество делителей, у всех других - четное.

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

Alexander Belov 15.04.2016 22:33

Яростный Меч,
Благодарю! Всё несложно оказалось.

function checkNum (num){
  return Math.sqrt (num) % 1 ? alert ("Чётное") : alert ("Нечётное");
}

checkNum (9);
checkNum (177);
checkNum (91);
checkNum (100);


Часовой пояс GMT +3, время: 06:16.