|
Sito Eratostenesa
Jest to algorytm pozwalający wyznaczyć wszystkie liczby pierwsze z zakresu od 2 do n. Działanie algorytmu polega na
"wykreślaniu" wielokrotności kolejnych liczb.
Sito Eratostenesa - program w języku Pascal
program sito;
const rozmiar =20;
var tablica:array [2..rozmiar] of boolean;
i,j:integer;
begin
{zainicjowanie tablicy wartosciami true}
for i:=2 to rozmiar do tablica[i]:=true;
{sito}
for i:=2 to rozmiar do
if (tablica[i]=true) then
begin
j:=2*i;
while (j<=rozmiar) do
begin
tablica[j]:=false;
j:=j+i;
end;
end;
{wypisanie liczb pierwszych na ekran}
for i:=2 to rozmiar do
if (tablica[i]=true) then write(i,', ');
readln;
end.
Sito Eratostenesa - program w języku C++
#include <cstdlib>
#include <iostream>
using namespace std;
const int rozmiar = 20;
int main(int argc, char *argv[])
{
bool tablica[rozmiar+2];
int i,j;
/* zainicjowanie tablicy wartosciami true */
for (i=0;i<=rozmiar+1;i++)
tablica[i]= true;
/* sito */
for (i=2;i<=rozmiar;i++)
if (tablica[i]==true)
{
j=2*i;
while (j<=rozmiar)
{
tablica[j]=false;
j=j+i;
}
}
/* wypisanie liczb pierwszych na ekran */
for (i=2;i<=rozmiar;i++)
if (tablica[i]==true) cout << i << ", " ;
cout << "\n";
system("PAUSE");
return EXIT_SUCCESS;
}
Sito Eratostenesa - program w języku Java
public class sito
{
public static void main(String[] arg)
{
int rozmiar;
rozmiar = 20;
boolean[] tablica = new boolean[rozmiar+2];
int i,j;
/* zainicjowanie tablicy wartosciami true */
for (i=0;i<=rozmiar+1;i++)
tablica[i]= true;
/* sito */
for (i=2;i<=rozmiar;i++)
if (tablica[i]==true)
{
j=2*i;
while (j<=rozmiar)
{
tablica[j]=false;
j=j+i;
}
}
/* wypisanie liczb pierwszych na ekran */
for (i=2;i<=rozmiar;i++)
if (tablica[i]==true) System.out.print(i+", ") ;
}
}
Sito Eratostenesa - program w Delphi
procedure TForm1.Button1Click(Sender: TObject);
const rozmiar =20;
var tablica:array [2..rozmiar] of boolean;
i,j:integer;
begin
Memo1.Clear;
{zainicjowanie tablicy wartosciami true}
for i:=2 to rozmiar do tablica[i]:=true;
{sito}
for i:=2 to rozmiar do
if (tablica[i]=true) then
begin
j:=2*i;
while (j<=rozmiar) do
begin
tablica[j]:=false;
j:=j+i;
end;
end;
{wypisanie liczb pierwszych na ekran}
for i:=2 to rozmiar do
if (tablica[i]=true) then Memo1.Text:=Memo1.Text +intToStr(i)+', ';
end;
|
|
|