Rozkład liczby na postać iloczynu potęg liczb pierwszych.

0

Witam,
Zastanawiam się od dłuższego czasu jak napisać algorytm, który przetworzy liczbę na iloczyn potęg liczb pierwszych.
Czyli jaki powinien być algorytm, żeby nie było np. tak: 12=223 a tak 12=2^2*3

0

Taki sam jest ten pierwszy, tylko pogrupuj sobie te same czynniki.

0

A jak usprawnić ten kod, żeby na samym końcu wyjścia nie pokazywała się gwiazdka??

#include <iostream>
#include <cmath>
#include <cstdlib>

using namespace std;

int main()
{
    int x, i=2, e;
    cout<<"Podaj liczbe: ";
    cin>>x;
    int k=x/2+1;
    int *t=new int[k];
    for(int j=0; j<k; j++) {t[j]=0;}
    cout<<x<<"=";
    e=(int)sqrt((double)x);
    while (i<=e)
    {
        while (x%i==0)
        {
            t[i]++;
            x /= i;
            e=(int)sqrt((double)x);
        }
        i++;
    }
    if (x > 1)
        {t[x]++;}

    /*for(i=0; i<k; i++)
    {
        cout<<t[i]<<" ";
    }*/

    for(int i=2; i<k; i++)
    {
        if(t[i]>0)
        {
            if(t[i]==1) {cout<<i<<"*";}
            else {cout<<i<<"^"<<t[i]<<"*";}
        }
    }

    return 0;
}
 
0
 for(int i=2; i<k; i++) 
{ 
     if(t[i]>0) 
     { 
           if(t[i]==1 ) {cout<<i;} 
           else {cout<<i<<"^"<<t[i];}
           
          if(i!=k-1){ cout<<"*";}
      }

Pisze z telefonu to formatowanie nie jest idealne :p

0

Mógłby ktoś dość łopatologicznie wytłumaczyć algorytm grupowania tych samych czyników, muszę napisać taki sam program w delphi, a z kodu w c++ zupełnie nic nie rozumiem.

0

Robisz tak:

pfactors[] <- array of prime factors of n
fcount[] <- array of quantity of given factor

for each factor in pfactors
  fcount[factor]++

for each key => value in fcount
  if value != 0
    write '*', key, '^', value

1 użytkowników online, w tym zalogowanych: 0, gości: 1