Вход

Просмотр полной версии : Дано натуральное число n. Найти количество его делителей, что кратные 3.


Ирина99
15.11.2017, 13:54
Дано натуральное число n. Найти количество его делителей, что кратные 3.

Помогите пожалуйста...

Nexus
15.11.2017, 14:06
var number=1369,
result=number.toString().split('').filter(function (n){
return n%3==0;
}).join(', ');

alert(result);
Прошу прощения за затуп.

Dilettante_Pro
15.11.2017, 14:13
var n=255, divisor = [], i = 3;
while(i < n) {
if(n % i == 0) divisor.push(i);
i = i + 3;
}
alert(divisor);

Dilettante_Pro
15.11.2017, 14:17
Nexus,
:victory: ! 12 на 3 не делится!

рони
15.11.2017, 14:25
Nexus,
Dilettante_Pro,
:-?

Nexus
15.11.2017, 14:31
Dilettante_Pro, я слово "делители" не так прочитал :(

рони
15.11.2017, 14:37
Dilettante_Pro,
может лишнее исключить из проверки?

Dilettante_Pro
15.11.2017, 14:43
рони,
может лишнее исключить из проверки?
Поскольку ТС не представил никаких своих попыток, я сделал самый примитивный перебор

рони
15.11.2017, 14:50
Dilettante_Pro,
ок ... на всякий случай, проверять i > n/3 нет смысла.

ksa
15.11.2017, 14:59
Предложу такой вариант... :D

var n=255;
var divisor = [];
if (n % 3 == 0) {
divisor.push(3);
n=Math.round(n/3);
var max=n/2;
for (var i=2; i<=max; i++) {
if (n % i == 0) {
divisor.push(3*i);
};
};
divisor.push(3*n);
};
alert(divisor);

ksa
15.11.2017, 15:00
проверять i > n/3 нет смысла
Я пошел еще дальше... :D

Dilettante_Pro
15.11.2017, 15:37
рони,
проверять i > n/3 нет смысла
это я оставил как бонус для ТС

Dilettante_Pro
15.11.2017, 15:39
ksa,
Я пошел еще дальше...
Т.е. с конца - дальше уже некуда:)

ksa
15.11.2017, 16:01
Dilettante_Pro, дальше в том смысле, что поделил не только на 3 но еще и на 2. :D