2*3
, dla \(\displaystyle{ 8}\) będzie 2^3
, a np. dla \(\displaystyle{ 20}\) to będzie 2^2*5
.2*3
, dla \(\displaystyle{ 8}\) będzie 2^3
, a np. dla \(\displaystyle{ 20}\) to będzie 2^2*5
.*
występuje na końcu a nie powinno jej być i że np. jak wpisuje liczbe \(\displaystyle{ 6}\) to mam wynik 2^1*3^1*
a powinno być 2*3
, więc nie powinno być bez ^1
. Kod: Zaznacz cały
#include <cmath>
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int a[40],i,d,m,n;
cin >> n;
i = 0; m = (int)sqrt(n);
for(d = 2; d <= m; d++)
while((n % d) == 0)
{
a[++i] = d;
n /= d;
};
if(n > 1) a[++i] = n;
for(int i=1,count=0;i<=d;++i)
{
if((!i)||((i!=d)&&(a[i-1]==a[i]))) ++count;
else
{
if (count!=0)
{
cout<<a[i-1]<<'^'<<count<<'*';}
count=1;
}
}
return 0;
}
Kod: Zaznacz cały
Podajemy n
Dla d=2 do d=n/2
licznik=0
Dopóki n podzielna przez d, podziel przez d i zwiększ licznik
Gdy n nie jest już podzielna przez d, jeśli licznik>1 wypisz 'd^licznik'
Jeśli n>1 wypisz '*'
Kod: Zaznacz cały
Podajemy n
Dla d=2, dopóki n>1 wykonaj 3-6, a następnie ++d
Dla licznik=0, dopóki n podzielne przez d, zwiększ licznik o jednej, a następnie n/=d
Jeśli licznik>0 wypisz 'd'
Jeśli licznik>1 wypisz '^licznik'
Jeśli n>1 i licznik >0 wypisz '*'
Kod: Zaznacz cały
int d=2;
while (n>1)
{
}
d++;
Kod: Zaznacz cały
int d=2;
while (n>1)
{
//tutaj wykonujemy 3-6
d++;
}
Kod: Zaznacz cały
for (int d = 2; n>1; ++d) {
//tutaj wykonujemy 3-6
}
Kod: Zaznacz cały
if (licznik>0) cout<<d;
if (licznik>1) cout<<"^"<<licznik;
if (n>1 && licznik >0) cout<<"*";
2*3^2
Kod: Zaznacz cały
#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std;
int main()
{
int n,licznik=0;
cin>>n;
int d=2;
while (n>1)
{
while(n%d==0)
{
licznik++;
n/=d;
}
if (licznik>0) cout<<d;
if (licznik>1) cout<<"^"<<licznik;
if (n>1 && licznik >0) cout<<"*";
d++;
}
return 0;
}