Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/47: Рейтинг темы: голосов - 47, средняя оценка - 4.94
 Аватар для Serebos
20 / 4 / 0
Регистрация: 18.04.2020
Сообщений: 158

Сделайте функцию getSimpleDivisors, которая будет принимать параметром целое число и находить все делители этого числа

31.10.2020, 17:34. Показов 9660. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, имеется задача: сделайте функцию getSimpleDivisors, которая будет принимать параметром целое число и находить все делители этого числа, являющиеся простыми числами.

Решил через две функции:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function isSimple(num){
    for (let i = 2; i < num; i++) {
    if (num % i == 0) {
        return false;
    }    
    }
    return true;
}
 
 
function getSimpleDivisors(num){
    for(let j=1; j<num; j++){
        if(num % j == 0 && isSimple(j)){
            console.log(j);
        }
    }
}
 
console.log(getSimpleDivisors(99)); // 1, 3, 11, undefined
Подскажите, пожалуйста, причину вывода undefined?

Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.10.2020, 17:34
Ответы с готовыми решениями:

Сделайте функцию getDigitsSum, которая параметром принимает целое число и возвращает сумму его цифр.
Задача: Сделайте функцию getDigitsSum (digit - это цифра), которая параметром принимает целое число и возвращает сумму его цифр. Нашла...

Дано целое число n. Получить все простые делители этого числа
Почему простые делители выдает не правильно? ch-число del-делитель dd-делитель делителя #include &quot;stdafx.h&quot; ...

Ввести целое число N. Вывести все простые делители этого числа
помогите с двумя задачами... только начали программирование... 1. Ввести целое число N. Вывести все простые делители этого числа ...

11
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
31.10.2020, 17:46
Лучший ответ Сообщение было отмечено Serebos как решение

Решение

Здравствуйте. Дело в том, что в строке 19 во-первых вызывается функция getSimpleDivisors, а во-вторых содержится инструкция вывести в консоль значение, возвращаемое этой функцией. Так как в самой функции (строка 14) осуществляется вывод в консоль, то в результате вызова мы видим 1, 3, 11.
Но далее, так как сама функция не содержит инструкции return, то в качестве возвращаемого значения выводится undefined. Можно сделать так:
JavaScript
19
getSimpleDivisors(99); // 1, 3, 11
Добавлено через 2 минуты
Кстати, 1 не является простым числом, функцию isSimple следует переписать.
1
 Аватар для Serebos
20 / 4 / 0
Регистрация: 18.04.2020
Сообщений: 158
31.10.2020, 19:29  [ТС]
Спасибо, DrType, за пояснения.
За console - не доглядел.
Сейчас переделаю.
0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
31.10.2020, 23:04
Цитата Сообщение от DrType Посмотреть сообщение
функцию isSimple следует переписать.
Serebos, еще лучше, если вы еще условие в цикле for перепишете на
JavaScript
1
i < Math.sqrt(num)
маленькая, но оптимизация
1
 Аватар для Serebos
20 / 4 / 0
Регистрация: 18.04.2020
Сообщений: 158
01.11.2020, 16:36  [ТС]
Спасибо, MrOnlineCoder, за совет.
сейчас попробую разобратся с замечанием!

Добавлено через 14 минут
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
i < Math.sqrt(num)
не понимаю логику записи, с которой следует такая вот строка, например, для значения 2 переменной i:

JavaScript
1
for (let i = 2; i<1.4142135623730951; i++)
подскажите, пожалуйста, как понимать этот код?

Спасибо.
0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
01.11.2020, 17:57
Serebos, итерация такого цикла просто никогда не выполниться , и у вас функция вернет true, что правда - поскольку 2 - простое число.
1
 Аватар для Serebos
20 / 4 / 0
Регистрация: 18.04.2020
Сообщений: 158
01.11.2020, 18:07  [ТС]
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
итерация такого цикла просто никогда не выполниться
MrOnlineCoder, даже сейчас, не совсем понимаю,
поскольку
JavaScript
1
for (let i = 4; i < 2; i++)
также никогда не выполнится, и вернет true? но 4 - не относится к простым числам!

СПАСИБО!
0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
01.11.2020, 18:25
Serebos, извиняюсь, тогда нужно изменить условие например так:

JavaScript
1
for (let i = 2; i <= Math.floor(Math.sqrt(num))+1; i++)
1
 Аватар для Serebos
20 / 4 / 0
Регистрация: 18.04.2020
Сообщений: 158
01.11.2020, 18:40  [ТС]
Спасибо, MrOnlineCoder, этот код работате так, как и предполагалось
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function isSimple(num){
    for (let i = 2; i <= Math.floor(Math.sqrt(num))+1; i++) {
    if (num % i == 0) {
        return false;
    }    
    }
    return true;
}
 
 
function getSimpleDivisors(num){
    for(let j=1; j<num; j++){
        if(num % j == 0 && isSimple(j)){
            console.log(j);
        }
    }
}
 
getSimpleDivisors(99); // 1, 3, 11,
но все равно не понимаю это условие
JavaScript
1
(let i = 6; i <= 2+1; i++)
код не выполнится, и вернет true? но 6 - не относится к простым числам! (НО ЭТО ПРОТИВОРЕЧИТ ВЫВЕДЕНОМУ РЕЗУЛЬТАТУ фУНКЦИИ)

Также очень важно то, какое значение функциональности заложено в изминение
JavaScript
1
i < num; на i <= Math.floor(Math.sqrt(num))+1;
???

СПАСИБО!
0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
01.11.2020, 18:45
Лучший ответ Сообщение было отмечено Serebos как решение

Решение

Serebos, так а откуда вы берете i = 6 ? У вас же цикл всегда начинается с i = 2, а не i = num

Добавлено через 2 минуты
Цитата Сообщение от Serebos Посмотреть сообщение
какое значение функциональности заложено в изминение
если я под значением функциональности имеется ввиду "зачем", то это просто оптимизация, для проверки простого числа достаточно проверить на деление все числа до квадратного корня из этого же числа, просто для больших чисел функция будет выполняться чуть быстрее.

И кстати, если пишете на английском названия функций, то принято простые числа называть prime numbers, а не буквально simple
1
 Аватар для Serebos
20 / 4 / 0
Регистрация: 18.04.2020
Сообщений: 158
01.11.2020, 18:48  [ТС]
MrOnlineCoder, сори. Кажеться я понят, что вы имеете ввиду. Сейчас на работу собираюсь, завтра пересмотрю!
Спасибо.
0
 Аватар для Serebos
20 / 4 / 0
Регистрация: 18.04.2020
Сообщений: 158
02.11.2020, 14:21  [ТС]
Здравтсуйте, MrOnlineCoder, посмотрел я внимательно на код:
JavaScript
1
(let i = 2; i < num; i++) и (let i = 2; i <= Math.floor(Math.sqrt(num))+1
для числа 12, например, делители будут выбраны: 2,3,4,5,6,7,8,9,10,11 и 2,3,4 соответсвенно
для 13: 2,3,4,5,6,7,8,9,10,11,12 и 2,3,4 соответсвенно

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

Спасибо, за помощь!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.11.2020, 14:21
Помогаю со студенческими работами здесь

Ввести целое число N. Вывести все простые делители этого числа
прошу помочь над 2 задачами в с++: 1. Ввести целое число N. Вывести все простые делители этого числа 2. Ввести строку и слово,...

Дано простое число. Составить функцию, которая будет находить следующие простые числа до K-го
Пожалуйста помогите!!! Задание: Дано простое число. Составить функцию, которая будет находить следующие простые числа до K-го,.

Составить функцию, которая будет находить следующее за заданным простое число
Не могу понять при вводе 4,6,8,10 и т.д. паскаль ещё раз предлагает ввести ту же переменную. Мне нужно чтобы при вводе этих чисел на экран...

Составить функцию, которая будет находить следующее за ним простое число
Дано простое число. Составить функцию, которая будет находить следующее за ним простое число. питон 2.7 есть код на паскале ...

Составить функцию, которая будет находить следующее за ним простое число
Дано простое число. Составить функцию, которая будет находить следующее за ним простое число.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru