Найти все простые делители числа - C (СИ)
Формулировка задачи:
Программа должна находить все простые делители числа.
Выводит не все делители и некоторые не верно..Что не так?
#include <stdio.h>
int main()
{
int m;
printf("Enter:");
scanf("%d",&m);
int mas[m],a,b,c=0,e=0,i,f;
for (b=1;b<=m;b++)
mas[b]=b;
for (a=1;a<=m;a++){
c=m%mas[a];
if(c==0){
for(i=2;i<a;i++){
f=mas[a]%i;
if(f==0)
++e;}
if(e==0)
printf("%d ",mas[a]);}}
}Решение задачи: «Найти все простые делители числа»
textual
Листинг программы
#include <stdio.h>
int main()
{
int m, f, i=2;
printf("Enter:");
scanf("%d",&m);
while(m!=1)
{
f=0;
while(m%i==0)
{
f=1;
m/=i;
}
if(f)
printf("%d ", i);
i++;
}
return 0;
}
Объяснение кода листинга программы
Вывод программы: список простых делителей введённого числа.
- Объявлены три переменные: m (введённое число), f (флаг), i (счётчик).
- Пользователю предлагается ввести число.
- Цикл while (пока число не станет равным 1).
- В каждой итерации: a. Флаг f устанавливается в 0. b. Цикл while (пока число делится на текущий простой делитель без остатка). c. Если число делится без остатка, то: d. Флаг f устанавливается в 1. e. Число делится на текущий простой делитель. c. Цикл while завершается. d. Если флаг f был установлен в 1, то выводится текущий простой делитель. e. Счётчик i увеличивается на 1.
- Цикл while завершается, и программа возвращает 0.