Найти все простые делители числа - 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;
}

Объяснение кода листинга программы

Вывод программы: список простых делителей введённого числа.

  1. Объявлены три переменные: m (введённое число), f (флаг), i (счётчик).
  2. Пользователю предлагается ввести число.
  3. Цикл while (пока число не станет равным 1).
  4. В каждой итерации: a. Флаг f устанавливается в 0. b. Цикл while (пока число делится на текущий простой делитель без остатка). c. Если число делится без остатка, то: d. Флаг f устанавливается в 1. e. Число делится на текущий простой делитель. c. Цикл while завершается. d. Если флаг f был установлен в 1, то выводится текущий простой делитель. e. Счётчик i увеличивается на 1.
  5. Цикл while завершается, и программа возвращает 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5
Похожие ответы