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


Задачи,советы и ответы - часть 40


Программа 2_23.bas

DECLARE FUNCTION prime!(N&)

REM Разложение четного числа на сумму двух простых CLS

INPUT "Введите четное число: ",М& IF prime (M&-2)=1 THEN

PRINT M&; "=2-f ";M&-2

FOR j&=l TO M&/2 STEP 2

IF prime(j&)=l AND prime (M&-J&)=1 THEN

PRINT M&;"=";j&;"+";M&-j&

END IF

NEXT j& END

FUNCTION prime (N&)

DIM j AS LONG

IF N&<4 THEN GOTO Ml

IF N& MOD 2=0 THEN GOTO MO

FOR j=3 TO SQR(N&)+1 STEP 2

IF N& MOD j=0 THEN GOTO MO

NEXT j

Ml: prime=l: EXIT FUNCTION MO: prime=0

END FUNCTION

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

/* Разложение четного числа на сумму двух простых */ tinclude <stdio.h> linclude <math.h> int prime(long N) ; main()

{

long M,j;

clrscr () ;

printf("\n Введите четное число: ");

scanf("%ld",&M);

if (prime(M-2) ) printf ("%ld== 2+%ld\t",M,M-2) ;

for(j=l; j <= M/2; j+=2)

if(prime(j) && prime(M-j)) printf("!ld=l31d+%ld\t",

M, j, M-j);

getch(); }

int prime(long N) {

long kmax,j;

if(N<4) return 1;

if(N%2==0) return 0;

kmax=sqrt(N)+0.5;

for(j=3; j<=kmax; j+=2)

if(N%j==0) return 0; return 1; }

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

program razlojenie;

{ Разложение четного числа на сумму двух простых }

var

M:longint;

j:integer; label m2;

function prime(N:longint):byte; var

j:longint; label ml; begin

prime:=l;

if N<4 then exit;

prime:=0;

if N mod 2=0 then exit; j:=3;

ml: if N mod j=0 then exit;

J:=J+2;

if j*j<=N then goto ml;

prime:=1; end; begin

write ('Введите четное число: ');

readln(M);

if prime(M-2)=l then writeln(M,'+',M-2);

j:=3; m2:

if (prime(j)=l) and (prime(M-j)=1) then writeln(M,'=',j,'+',M-j);

j:=j+2;

if j< M div 2 then goto m2;

readln; end.

Задание 2.24. Генерация чисел Хэмминга

Числами Хэмминга называются натуральные числа, которые среди своих делителей имеют только степени чисел 2, 3 и 5. Первые 10 упорядоченных по возрастанию чисел Хэмминга образует последовательность 1, 2, 3, 4, 5, 6, 8, 9, 10 и 12. Первому числу этого ряда соответствуют нулевые степени всех сомножителей. Составить программу, которая генерирует первые 1000 чисел Хэмминга.




- Начало -  - Назад -  - Вперед -