Cześć!
Mam problem z zadaniem, próbowałem je rozwiązać samodzielnie ale niestety nie potrafię.
Tutaj jest polecenie zadania:
Dzielniki i czynniki pierwsze liczby
Napisz program który wyznaczy rozkład liczby na czynniki pierwsze oraz wypisze wszystkie
dzielniki liczby i ilość dzielników.
Wejście:
Liczba x (0<=x<=1000000)
Wyjście:
W kolejnych liniach program powinien wypisać:
• Linia 1: czynniki pierwsze (oddzielone spacją) lub słowo „BRAK” jeżeli liczby nie da się
rozłożyć na czynniki pierwsze
• Linia 2: dzielniki (oddzielone spacją) lub słowo „BRAK” jeżeli liczba nie ma żadnych
dzielników
• Linia 3: ilość dzielników
Generalnie program działa, ale nie wiem jak napisać jaka jest ilość dzielników i przy nie których liczbach są złe wyniki. Jak daje program do sprawdzenia to mam 0 punktów także coś jest nie tak.
Miałbym prośbę aby napisać co tu nie gra :D i podesłać rozwiązanie.
Tutaj są moje wypociny:
#include <iostream>
#include <cmath>
#include <cstdlib>
using namespace std;
bool czy_pierwsza(int n)
{
if(n<2)
return false;
for(int i=2;i*i<=n;i++)
if(n%i==0)
return false;
return true;
}
void czynniki(unsigned n)
{
if(czy_pierwsza(n))
cout<<"BRAK"<<endl;
else if(n == 1)
{
cout<<"BRAK"<<endl;
cout<<"1";
}
else
{
unsigned g,i;
g = sqrt(n);
for(i = 2; i <= g; i++)
{
while(n % i == 0)
{
cout << i << " ";
n /= i;
}
}
cout<<endl;
}
}
int main()
{
int b;
unsigned long long n;
cin>> n;
czynniki(n);
long long gg=sqrt(n);
if(n>1)
{
for(int i=1; i<=gg; i++)
{
if(n % i == 0)
cout << i << " ";
}
for(int i=int(gg); i>=2; i--)
{
if(n % i == 0)
cout <<n / i<<" ";
}
cout<<n<<endl;
cout.flush();
}
if(czy_pierwsza(n))
{
cout<<"2";
}
return 0;
}