Witam!
Napisałem program do sprawdzenia, czy wprowadzona przez użytkownika liczba jest liczbą pierwszą czy liczbą złożoną. Przy pojedynczym uruchomieniu program działa bez zarzutu. Ale kiedy umieściłem całość w pętli i chciałem, aby program sprawdził mi liczby z zadanego zakresu (czyli skończoną ilość razy) to program przestał pracować prawidłowo i wyświetla mi same liczby 2 i 0. Dodam, że użyłem wszystkich trzech pętli i wszystkie robią to samo...
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
int czynniki();
int liczba=10, modulo, pierwiastek, reszta=1;
int main(int argc, char** argv)
{
do
{
cout << czynniki() << endl;
liczba=liczba+1;
}
while(liczba<=100);
system("pause");
return 0;
}
///////////////////////////////////////////////////////////////////////
int czynniki()
{
pierwiastek=sqrt(liczba); // MAKSYMALNA GRANICA POSZUKIWAN DZIELNIKA
int RESZTA_DZIELENIA[pierwiastek-1];
for (int i=2; i<=pierwiastek; i++)
{
modulo=liczba%i;
RESZTA_DZIELENIA[i]=modulo;
reszta=reszta*RESZTA_DZIELENIA[i]; // ILOCZYN RESZT DZIELENIA MODULO PRZEZ LICZBY Z ZADANEGO ZAKRESU
}
if(reszta==0) // JESLI LICZBA JEST ZLOZONA, TO ILOCZYN RESZT DZIELENIA BEDZIE ROWNY ZERO
{
cout << " " << liczba <<":\t";
do // PROCEDURA ROZKLADANIA LICZBY NA CZYNNIKI
{
for (int j=2; j<=liczba; j++)
{
if(liczba%j==0)
{
cout << j << " ";
liczba/=j;
break;
}
}
}
while(liczba>1);
cout << endl;
}
else // KIEDY RESZTA JEST ROZNA OD ZERA, TO LICZBA JEST LICZBA PIERWSZA
{
cout << " " << liczba << " jest pierwsza " << endl;
}
return 0;
}