Разширяване на броя на факторите,

Онлайн множители


Всеки брой могат да се разделят на основните фактори. Това не води до същия разлагане,
ако пренебрегваме реда на входни фактори.






Последователността от действия, които се извършват от разлагането на номера на основните фактори в математиката:

  • Проверете дали предложеният брой е председател.
  • Ако не, вземете, като се ръководи от знаците на разделение, разделител, от прости числа, започвайки от най-малките (2, 3, 5, ...).
  • Повторете това действие, докато лично не ще председател.

За да се определи primality на редица може да се използва "алгоритъм сити Ератостен".
Разширяването на основните фактори на програмирането се извършва по аналогичен начин:

    • Задайте началната стойност, равна на 2 разделител.
    • Проверете дали номерът е разделен на делителя. Ако отговорът е да, запишете списък на факторите, свързани с разделител и се разделят на броя с делителя.
    • Повторете предишната стъпка, докато състоянието на мултиплициране.
    • Преминаване към следващата делител (в най-простия случай увеличение разделител 1)
    • Изчисленията приключили при частното става равен на 1.






Изпълнение на C ++

#include
използване на пространството от имена STD;
INT главната ()
Int п DIV = 2;
Cout <<"N = " ;
CIN >> н;
Cout < докато (п> 1)
докато (п% DIV == 0)
Cout <<" * " < п = п / DIV;
>
Разделение ++;
>
cin.get (); cin.get ();
връщане 0;
>


Ако ние считаме, че дори броят на основните фактори, може да бъде само 2, е възможно да се намали броят на циклите в изпълнението на алгоритъм, чрез добавяне на допълнителен

#include
използване на пространството от имена STD;
INT главната ()
Int п DIV = 2;
Cout <<"N = " ;
CIN >> н;
Cout < докато (п> 1)
докато (п% DIV == 0)
Cout <<" * " < п = п / DIV;
>
ако (DIV == 2) DIV ++;
друг DIV + = 2;
>
cin.get (); cin.get ();
връщане 0;
>


Алгоритъм на множители може също да се осъществява чрез използване на рекурсия:

#include
използване на пространството от имена STD;
нищожен находка (инт н, вътр Разделение)
ако (п == 1) замяна;
ако (n.iv == 0)
Cout <<" * " < намери (п / DIV, DIV);
>
още
ако (Разделение == 2)
намери (п, DIV + 1);
още
намери (п, DIV + 2);
>
INT главната ()
Int п DIV = 2;
Cout <<"N = " ;
CIN >> н;
Cout < намери (N, 2);
cin.get (); cin.get ();
връщане 0;
>