„Eratoszthenész szitája” változatai közötti eltérés
[ellenőrzött változat] | [nem ellenőrzött változat] |
Tartalom törölve Tartalom hozzáadva
Visszavontam az utolsó 2 változtatást (46.40.26.177), visszaállítva Atobot szerkesztésére: marha érdekes, de nem jó |
Javítások a példakódokban (stílus javítása, tömb túlindexelés megszüntetése a C++ és Pascal példákban) |
||
93. sor:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
const int M=50; //Meddig vizsgáljuk a számokat▼
fout <<"A(z) " << M << "-nel nem nagyobb primszamok:\n"; //A fájl bevezető szövege▼
bool tomb [M+1]; //logikai tömböt hozunk létre▼
tomb[0]=tomb[1]=false; // a 0-át és az 1-et alapból hamisnak vesszük, hiszen nem prímek.▼
for (int i=2;i<=M;++i) tomb[i]=true; //2-től indítjuk a for-t, alapból mindent igazra állítunk.▼
if(tomb[i]) //megnézzük hogy igaz-e▼
fout<<i<<" "; // kiírja a fájlba a számokat, szóközzel elválasztva▼
}▼
▲
for (int i = 2; i*i <= M; i++) {
if (tomb[i]) {
// prímet találtunk, a többszöröseit kiszitáljuk
for (int j = i*i; j <= M; j += i) tomb[i] = false;
}
}
for (int i = 0; i <= M; ++i) {
}
}
▲}
</source>
122 ⟶ 126 sor:
<source lang="pascal">
var n,i,j,p:longint;
a:array[1..
fout:text;
Begin
▲ n:=2000000; //az n lehet bármilyen érték ami belefér longint-ba
for i:=2 to n do {feltöltjük a tömböt igaz értékekkel}
▲ a[1]:=false; //az a[1] 0-t vesz fel mivel az 1 nem prímszám
p:=2;
if
{prímet találtunk, a többszöröseit kiszitáljuk}
j:=p*p;
while j <= n do
end; end;
if a[i] then
write(fout,i,' ');
close(fout);
End.
151 ⟶ 160 sor:
# -*- coding: utf-8 -*-
from math import sqrt
lst = [1]*1000 # létrehozunk egy listát, ebben a példában (1000) elemmel▼
n = 1000
for j in range(i*2, 1000, i): # a listának azon elemeihez, melyek indexe az i-nek többszörösei, nullás (false) értéket rendelünk▼
▲ lst[j] = 0
for i in range(2,
▲ for j in range(i*
lst[j] = False
for i in range(2,n): # Kiíratjuk azoknak az elemeknek az indexét, melyek értéke 1 maradt
if lst[i]:
print i,
|