Разложить натуральное число на простые множители - C (СИ)
Формулировка задачи:
Задание:
Дано натуральное число n. Разложить его на простые множители
Я это задание реализовал так, но почему то не работает, просто не выводит результат на экран. помогите пожалуйста найти ошибку, заранее спасибо
#include <stdio.h>
#include <math.h>
main()
{
double N, i, x;
i=2;
printf("Vvedite naturalnoe chislo");
scanf ("%f", &N);
while (N > 1)
{
x=fmod (N,i);
if (x=0)
{
printf("%f", &i);
N/=i;
}
else
i+=1;
}
system("pause");
}Решение задачи: «Разложить натуральное число на простые множители»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <cstdlib>
int main()
{
int t,i=2;
printf("Enter YOUR number:\n");
scanf("%d",&t);
printf("%d = ",t);
while(i<=t)
{
if(t%i==0)
{
printf("%d",i);
t=t/i;
if(t>1)
printf("*");
}
else
i=i+1;
}
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и стандартными функциями
- Объявление переменных: t (входное число), i (переменная для цикла), buf (неизвестная нам переменная, возможно, для хранения результата разложения на множители)
- Вывод сообщения с просьбой ввести натуральное число
- Считывание входного числа с помощью функции scanf
- Вывод сообщения о начале разложения числа на множители с заданным числом
- Организация цикла по переменным i от 2 до t
- Проверка, делится ли t на i без остатка
- Если да, то выводится i (простой множитель), t делится на i и i увеличивается на 1
- Если нет, то i увеличивается на 1
- Цикл продолжается, пока i меньше или равно t
- Если t больше 1, то выводится символ
*(для отмечения повторяющихся множителей) - После окончания цикла выводится t (результат разложения на множители)
- Программа возвращает 0, что означает успешный конец работы