Skocz do zawartości

Sito Eratostenesa - problem z uruchomieniem


Prion

Pomocna odpowiedź

Czesc,

Mam problem z programem a mianowicie nie działa mimo poprawnej składni. Konsultowałem go już  z kilkoma osobami, jednak nikt nie był mi w stanie pomóc. W C działa jak jest zapisany w programie a w C++ w ogóle nie mogłem go odpalić.

Pomogliście mi w 2014 to mam i nadzieję że  pomożecie dzisiaj ;D 

 

#include <stdio.h> #include <stdlib.h> //Generator liczb pierwszych do 535 liczb. //Maksymalna deklaracja tablicy 124 999 999; //Dziala do zakresu 3856 - powyzej sie zaawiesza. //Wyswietlanie wszystkich liczb spowalnia //Jednakowo dziala dla CodeBlock i Dev unsigned long int tab[8048]; unsigned long int pierwsza[8048]={2,3}; //Poczštkowy zbior dwoch liczb int main() { //deklaracja zmiennych unsigned long int a,b,c,m,i,p,n; //podanie zakresu do jakiego ma szukac printf("Podaj wartosc zakresu dla wyznaczenia liczb :"); scanf("%lu", &m); //Wypelnienie tablicy liczbami z zakresu for(i=0;i<=m;i++) { tab=i; } //Wartosci poczatkowe a=1; //zakres b=2; //Ilosc liczb pierwszych c=1;  while(c<=m) { //wyznaczenie zakresu na podstawie zaleznosci a=pierwsza[b-1]*2; //zerowanie w tablicy wartosci nie bedacych pierwszymi //dla danego zakresu for(i=0;i<b;i++) { n=2; while(pierwsza * n<=a) { p = pierwsza * n; tab[p]=0; n++; } } //policzenie liczb pierwszych b=0; for(i=2;i<=a;i++) { if (tab!=0) { b++; } } //Wpisanie do tablicy nowych liczb pierwszych n=0; for(i=2;i<=a;i++) { if(tab!=0) { pierwsza[n]=tab; n++; } } //c=pierwsza[b-1]; >> tak powinno być c=pierwsza[b-1]+4; //działa tylko dla 4 i więcej } printf("Liczby to:\n"); //wyswietlenie liczb for(i=0;i<b;i++) { printf("%lu\n", pierwsza); } printf("\nNajwieksza liczba pierwsza %lu\n", pierwsza[b-1]); printf("\nLiczb pierwszych jest:%lu\n", b); system("PAUSE"); return 0; }

 

Link do komentarza
Share on other sites

#include <stdio.h>
#include <stdlib.h>
//Generator liczb pierwszych do 535 liczb.
//Maksymalna deklaracja tablicy 124 999 999;
//Dziala do zakresu 3856 - powyzej sie zaawiesza.
//Wyswietlanie wszystkich liczb spowalnia
//Jednakowo dziala dla CodeBlock i Dev

unsigned long int tab[8048];
unsigned long int pierwsza[8048]={2,3}; //Poczštkowy zbior dwoch liczb

int main()
{
//deklaracja zmiennych
unsigned long int a,b,c,m,i,p,n;
//podanie zakresu do jakiego ma szukac
printf("Podaj wartosc zakresu dla wyznaczenia liczb :");
scanf("%lu", &m);
//Wypelnienie tablicy liczbami z zakresu
for(i=0;i<=m;i++)
{
tab[i]=i;
}
//Wartosci poczatkowe
a=1; //zakres
b=2; //Ilosc liczb pierwszych
c=1;
while(c<=m)
{
//wyznaczenie zakresu na podstawie zaleznosci
a=pierwsza[b-1]*2;
//zerowanie w tablicy wartosci nie bedacych pierwszymi
//dla danego zakresu
for(i=0;i<b;i++)
{
n=2;
while(pierwsza[i] * n<=a)
{
p = pierwsza[i] * n;
tab[p]=0;
n++;
}
}
//policzenie liczb pierwszych
b=0;
for(i=2;i<=a;i++)
{
if (tab[i]!=0)
{
b++;
}
}
//Wpisanie do tablicy nowych liczb pierwszych
n=0;
for(i=2;i<=a;i++)
{
if(tab[i]!=0)
{
pierwsza[n]=tab[i];
n++;
}
}
//c=pierwsza[b-1]; >> tak powinno być
c=pierwsza[b-1]+4; //działa tylko dla 4 i więcej
}

printf("Liczby to:\n");
//wyswietlenie liczb
for(i=0;i<b;i++)
{
printf("%lu\n", pierwsza[i]);
}
printf("\nNajwieksza liczba pierwsza %lu\n", pierwsza[b-1]);
printf("\nLiczb pierwszych jest:%lu\n", b);
system("PAUSE");
return 0;
}

 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.