Розложить на множители натуральное число. Число задать при опросе

  • Автор темы jaFit
  • Дата начала
J

jaFit

#1
Помогите пожалуста написать программу на С.

Розложить на множители натуральное число. Число задать при опросе.
Например, 1050=2*3*5*5*7

буду очень благодарен! ответы пишите сюда или в асю (570-505-552) :D

я придумал как ее сделать, но написать ее на ЯП не умею. Ход такой: число делится на 2 (самое меньшее простое число), если оно делится на 2 без остачи, то 2 - запоминается. Так само для 3, 5, 7, 11... хотя вводить все простые числа и проверять их, ето глупо... а по другому я не знаю как делать ;)
 
E

eReS

#2
Помогите пожалуста написать программу на С.

Розложить на множители натуральное число. Число задать при опросе.
Например, 1050=2*3*5*5*7

буду очень благодарен! ответы пишите сюда или в асю (570-505-552) :D
Код:
/* 
* http://projecteuler.net
* 
* Задание №3
* 
* Простые делители 13195 - 5,7,13 і 29.
* Найти найбольшее простое число с 600851475143
*/

#include <iostream>
#include <cmath>		// sqrt
using namespace std;

int MiniPrimeFactor(long long int a)
{	
int off = 0;
for (int i=2; i<=a; ++i) {
if (!(a%i)) {
return i;
}
}
}

int main()
{
long long int max_number = 0;			// полученое число
long long int get_number;				// найменьшее простое число
long long int number = 600851475143;	// число от которого нужно найти найбольший делитель

while (number > 1) {
get_number = MiniPrimeFactor(number);
cout << get_number << " ";

if (max_number < get_number) {
max_number = get_number;
}

number = number/get_number;
}
cout << endl << "Найбольший делитель: " << max_number << endl;
}
 
J

jaFit

#3
чтото ето оч сложно... и помоему совсем, не то. я оттсуда ничего не смогу высосать потому что я не понимаю ... и ето написано на С++ а мне просто на С :D
 
J

jaFit

#4
Вот что то типа етого, но у меня не работает :D

<!--shcode--><pre><code class='С'>#include <stdio.h>
main()
{
int M,i=3;
printf("vvedi M\n");
scanf("%d",&M);
printf("%d=1",M);
while(M%2==0)
{
printf("*%d",2);
M=M/2;
}
while(i <=M)
{
if(M%i==0)
{
printf("*%d",i);
M=M/i;
}
else
i=i+2
}
}[/CODE]
 
E

eReS

#6
чтото ето оч сложно... и помоему совсем, не то. я оттсуда ничего не смогу высосать потому что я не понимаю ... и ето написано на С++ а мне просто на С :KillMe:
я кинул пример который делал недавно, если тебе даже в нем сложно разобраться - читай книжки и не морочь людям головы.
> 4. старайтесь ВСЕГДА сначала решить задачу САМОСТОЯТЕЛЬНО, ну а когда не выходит ОБЯЗАТЕЛЬНО публикуйте здесь свой код, даже если он не работает.
читай внимательно! сдесь на твой свист никто тебе просто так ничего писать не будет
 
J

jaFit

#7
я выложил код, смотри предыдущие посты, кстати все работает !!!