Чётное / нечётное количество делителей у числа.
Привет!
Пытаюсь решить задачу: функция принимает в качестве аргумента число и возвращает количество всех его делителей - чётное или нечётное.
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 Ожидаемым образом функция не работает. Консоль не показывает никаких ошибок. Прошу помочь решить эту задачу. |
Цитата:
|
рони,
Например, число 10, его делители 1, 2, 5, 10 - всего четыре, чётное количество. Число 9, его делители 1, 3, 9 - всего три, нечётное количество. |
|
Если надо только выяснить, четное это количество, или нет - просто проверь, является ли число квадратом. Возьми корень, проверь что он целочисленный
|
Яростный Меч,
Если Math.sqrt(num) % 1 === 0, то число является квадратом. У квадрата, насколько я понимаю, всегда будет 3 делителя. А как остальные числа проверять? |
Alexander Belov,
У квадрата нечетное количество делителей, у всех других - четное. Делители ведь можно разбить на пары, такие что произведение чисел в каждой паре равно проверяемому числу. Квадратный корень, если он есть, образует пару сам с собой, отсюда и нечетность. |
Яростный Меч,
Благодарю! Всё несложно оказалось.
function checkNum (num){
return Math.sqrt (num) % 1 ? alert ("Чётное") : alert ("Нечётное");
}
checkNum (9);
checkNum (177);
checkNum (91);
checkNum (100);
|
| Часовой пояс GMT +3, время: 14:58. |