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

Тема в разделе "C/C++/C#", создана пользователем jaFit, 28 мар 2010.

  1. jaFit

    jaFit Гость

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

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

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

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

    eReS Гость

    Код (Text):
    /*
    * 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;
    }
     
  3. jaFit

    jaFit Гость

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

    jaFit Гость

    Вот что то типа етого, но у меня не работает :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]
     
  5. jaFit

    jaFit Гость

    ну что никто не знает почему не работает ?
     
  6. eReS

    eReS Гость

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

    jaFit Гость

    я выложил код, смотри предыдущие посты, кстати все работает !!!
     
Загрузка...

Поделиться этой страницей