Разложение на простые множители - C (СИ) (80061)

Узнай цену своей работы

Формулировка задачи:

Требуется вывести представление целого числа N в виде произведения простых чисел. Входные данные Входной файл INPUT.TXT содержит натуральное число N (2 <= N <= 2^31-1). Выходные данные В выходной файл OUTPUT.TXT выведите список простых множителей числа N в порядке неубывания, разделенных знаком «*». В моей программе ошибка с типом переменной n, так как sqrt(n) уже не целое число, но если поменять на float, то не допустимо n%i и n = n/i. Помогите исправить.
#include <stdio.h>
#include <math.h>
int main()
{
   long n,i;
   FILE *fin, *fout;
 
 fin=fopen("input.txt","r");
 fout=fopen("output.txt","w");

 fscanf(fin, "%ld",&n);
 i = 2;
 while (i<=sqrt(n))
   if ((n%i)==0){
     fprintf(fout, "%ld*",i);
     n = n/i;
   }
   else
     i = i+1;
 
 fprintf(fout, "%ld",n);

 fclose(fin);
 fclose(fout);
 
  return 0;
}

Решение задачи: «Разложение на простые множители»

textual
Листинг программы
#include <stdio.h>
#include <math.h>
int main()
{
    double n, i;
    FILE *fin, *fout;
 
    fin=fopen("input.txt","r");
    fout=fopen("output.txt","w");
 
    fscanf(fin, "%lf", &n);
    i = 2;
    while (i<=sqrt(n))
        if((int)n % (int)i == 0) {
            fprintf(fout, "%.0lf*",i);
            n = n/i;
        } else
            i = i+1;
    fprintf(fout, "%.0lf",n);
    fclose(fin);
    fclose(fout);
    return 0;
}

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

В этом коде выполняется разложение числа на простые множители. Вот список действий, которые происходят в коде:

  1. Входные данные считываются из файла input.txt.
  2. Выходные данные записываются в файл output.txt.
  3. Переменная n инициализируется значением, считанным из файла.
  4. Переменная i инициализируется значением 2.
  5. Цикл while начинается, в котором переменная i проверяется на делимость на нее числа n.
  6. Если число делится на i без остатка, то i добавляется к выходным данным как множитель, а n делится на i.
  7. Если число не делится на i без остатка, то i увеличивается на 1.
  8. Цикл while продолжается, пока i меньше или равно квадратному корню из n.
  9. После окончания цикла, оставшееся число n записывается в выходной файл как последний множитель.
  10. Файлы input.txt и output.txt закрываются.
  11. Программа возвращает 0, что означает успешное выполнение.

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


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

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

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