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
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