Witam w ramach nauki napisałem kod żródłowy który podaje Liczby pierwsze z danego zakresu , wyświetla je na ekranie i podaje ile ich jest . I program działa , ale tylko wyznacza mi liczby z zakeru 10,000 tys. , dla 100,000tys. wyznacza tylko 10,000tys. , a dla 1 Miliona WYSPUJE się .
Jest to kod do nauki , wiem że można było by go prościej zapisać pętlą while ,ale ucząc się , napisałem w ten sposób i nawet musze się przyznać poszedłem troche na skróty i podstawiłem zmienna do potęli jako iterator . Czy tak można czy ta praktyka jest zakazana w programowaniu , czy błąd leży w innym miejscu ???
#include <iostream>
using namespace std;
unsigned long long x;
unsigned long long counter=0;
int main()
{
cout << "-----------------" << endl;
cout << "- Prime numbers -" << endl;
cout << "-----------------" << endl;
cout << "\nZakres : ";
cin >>x;
unsigned long long Zakres[x];
unsigned long long Primes[x];
for(unsigned long long i=0;i<x;i++)
{
Zakres[i]=i+1;
}
unsigned long long y,l,r;
for( x; x>1; x--)
{
bool test=0;
l=Zakres[x-1];
y=Zakres[x-1]/2;
for( y; y>=2;y--)
{
r = l%y;
if(r==0) test=1;
}
if(test==0)
{
//cout<<l<<endl;
Primes[counter]=l;
counter++;
}
}
unsigned long long i=1;cout<<"\n";
for( counter; counter>0; counter--)
{
cout <<"Lnr."<<i<<" = "<<Primes[counter-1]<<endl;
i++;
}
cout <<"\nW tym przedziale jest ich = "<<i-1<<endl;
cin.get();
cin.get();
return 0;
}