Практика программирования (Бейсик, Си, Паскаль)


         

сформировали очередное простое число


FOR I= 0 TO MAXK IF ISI(I)=l THEN

'если число еще не "проколото"

PRIME=I+I+3: ' сформировали очередное простое число

N=N+1: ' увеличили счетчик простых чисел

PRINT USING "#####";
PRIME; : ' вывод очередного простого числа

K=I+PRIME: ' индекс для первого "прокола"

WHILE К<=МAХК

REM "проколы" чисел, делящихся на
PRIME IS1(K)=0: K=K+PRIME
WEND
END IF
NEXT I
PRINT

PRINT "Среди первых ";МАХК+1; " нечетных чисел";
PRINT " найдено "; N; " простых"
END

Программа 2_22.с

#include <stdio.h>
#include <conio.h>

#define maxk 500

main() {

int pr_num,n=0;

char is[maxk+1];

register int i,k;

clrscr () ;

for(i=0; i<=maxk; i++) is[i]=l; /* все числа "на папирусе" */

for(i=0; i<=maxk; i++)

{if(is[i]==l) /* если число еще не "проколото" */

{ pr_num=i+i+3; /* сформировали очередное простое число */

n++; /* увеличили счетчик простых чисел */

printf("%5d",pr_num); /* вывод очередного простого имела */
k=i+pr num; /* индекс для первого "прокола" */
while (К<:=mахk)

{
/* "проколы" чисел, делящихся на pr_num */
is[k]=0; k+=pr_num;

}
}

}

printf("\nСреди первых %d нечетных чисел", maxk+1);

printf("найдено %d простых", n);
getch();
}

Программа 2_22.pas

program sievel;
uses Crt;
const

maxk=500;
n:integer=0;
var

is: array [0..maxk] of byte;
i,k,prime:integer;
begin clrscr;

for i:=0 to maxk do is[i]:=1; { все числа "на папирусе" }
for i:=0 to maxk do
begin

if is[i]=l then { если число еще не "проколото" }
begin

prime:=i+i+3; { сформировали очередное простое число }
inc(n); { увеличили счетчик простых чисел }

write(prime:5); { вывод очередного простого числа }
k:=i+prime; { индекс для первого "прокола" }

while k<=maxk do

begin { "проколы" чисел, делящихся на pr_num }

is[k]:=0; inc(k,prime); end end; end;

Содержание  Назад  Вперед