Разложение на простые множители - 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; }
Объяснение кода листинга программы
В этом коде выполняется разложение числа на простые множители. Вот список действий, которые происходят в коде:
- Входные данные считываются из файла
input.txt
. - Выходные данные записываются в файл
output.txt
. - Переменная
n
инициализируется значением, считанным из файла. - Переменная
i
инициализируется значением 2. - Цикл while начинается, в котором переменная
i
проверяется на делимость на нее числаn
. - Если число делится на
i
без остатка, тоi
добавляется к выходным данным как множитель, аn
делится наi
. - Если число не делится на
i
без остатка, тоi
увеличивается на 1. - Цикл while продолжается, пока
i
меньше или равно квадратному корню изn
. - После окончания цикла, оставшееся число
n
записывается в выходной файл как последний множитель. - Файлы
input.txt
иoutput.txt
закрываются. - Программа возвращает 0, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д