Inspirisan IsrkiboyI-ovim primerom nasao sam "poboljsanje":
0.Ulazni parametri su
baza i
broj;
1.Nadjes najveci delioc
baza-e oblika
faktor^stepen, gde je
faktor prim broj.
2.Inijalizujes brojac
rezultat=0
3.Za svaki broj, pocev od
2, pa do
broj, delis sa
faktor do god je deljiv sa istim, i za svako uspesno deljenje inkrementiras brojac
rezultat.
4.broj nula bice jednak celobrojnom deljenju
rezultat/stepen
Citat:
Sad delis a redom sa x, x^2, x^3, ... dokle god dobijas rezultat >0. Sve te medjurezultate sabiras i ono sto dobijes je ni manje ni vise nego trazeni broj nula.
Ovde se krije greska. Delenje
broj-a sa stepenima
faktor-a dace pogresne rezultate. Treba radti na nacin dat u tacki 3.
Evo (grubog) souce koda:
Code:
#include <iostream>
using namespace std;
int main(void){
cout << "\nUnesi broj: ";
int broj;
cin >> broj;
cout << "\nUnesi bazu: ";
int baza;
cin >> baza;
int baza_ = baza;
int najveci = 0;
int faktor = 1;
int stepen = 1;
for(int i=2; (baza_>1)&&(i*i<=baza); i++){
int k=0;
int l=1;
while(!(baza_%i)){
baza_/=i;
l*=i;
k++;
}
if(l>najveci){
najveci=l;
faktor=i;
stepen=k;
}
}
if(baza_>najveci){
najveci=faktor=baza_;
stepen=1;
}
cout << "\nNajveci delioc baza-e oblika faktor^stepen je: " << najveci;
cout << "\nfaktor = " << faktor << " stepen = " << stepen;
int ukupno = 0;
for(int i=2;i<=broj;i++){
int k = i;
while(!(k%faktor)){
k/=faktor;
ukupno++;
}
}
int broj_nula=ukupno/stepen;
cout << "\nBroj nula je: " << broj_nula;
}
O_o