Вывести на экран все простые делители заданного натурально числа - C (СИ)
Формулировка задачи:
#include <stdio.h>
int main() {
int k, n;
printf("Введите ваше натуральное число\n");
scanf("%d",&n);
for ( k= 2; k<=n/2; k++ ) {
if ( n%k == 0 ) {
printf( " %d", k );
}
}
printf( "\n" );
return 0;
}Решение задачи: «Вывести на экран все простые делители заданного натурально числа»
textual
Листинг программы
for(k=2; k<=n;k++ ) {
if (n%k==0) {
printf("%d\n", k);
while(n%k==0) n/= k;
}
}
Объяснение кода листинга программы
В данном коде выполняется следующий алгоритм:
- Переменная
kинициализируется значением 2. - Переменная
nне инициализируется, её значение должно быть задано до начала выполнения программы. - Условие цикла for выполняется, пока значение переменной
kменьше или равно значению переменнойn. - Внутри цикла проверяется, делится ли число
nна текущее значение переменнойkбез остатка. - Если делится, то выводится на экран значение переменной
k. - Затем выполняется цикл while, который будет выполняться, пока число
nделится без остатка на текущее значение переменнойk. - Внутри цикла while значение переменной
nделится на текущее значение переменнойk. - После выхода из цикла while, значение переменной
kувеличивается на единицу. - Цикл for повторяется с начала до тех пор, пока условие не станет ложным.
Данный код предназначен для поиска всех простых делителей числа
n. Он начинает проверку с числа 2 и последовательно делитnна все числа, которые меньше или равныn. Как только числоnперестаёт делиться на текущее значение переменнойkбез остатка, то она больше не является делителем и цикл while прекращается. Код может работать некорректно, если числоnотрицательное или нулевое. Также он может выводить повторяющиеся делители, если они есть.