Skocz do zawartości
Prion

Sito Eratostenesa - problem z uruchomieniem

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; }

 

Udostępnij ten post


Link to post
Share on other sites

Najpierw zamieść ten kod jak człowiek, bo ja na komórce widzę jedną długą linijkę.

Udostępnij ten post


Link to post
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;
}

 

Udostępnij ten post


Link to post
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...