На данной странице публикуются программы,связанные с простыми числами, а также программа нахождения дружественных чисел.

   'Разложение натурального числа на простые множители  на Бэйсике
 CLS
1 INPUT "  N=", n#
  PRINT n#; "=";
  i = 1
  d# = 1
2 d# = d# + i: IF d# > 2 THEN i = 2
 IF d# > SQR(n#) THEN PRINT n#: GOTO 4
3 n# = n# / d#: IF n# = 1 THEN PRINT d#: GOTO 4
  IF n# = INT(n#) THEN PRINT d#; "*"; : GOTO 3
 n# = INT(n# * d# + .1): GOTO 2
4 INPUT "  cont-1"; x
  IF x = 1 THEN 1
  END

примеры разложений:

123456789 = 3*3*3607*3803

9876543212 = 2*2*2469135803

98765432123 =1447*68255309

987654321234567 = 3*3*7*15677052718009

123456789876543 = 3*41152263292181

(Конечно ,чтобы разлагать 15-значные числа в QB, программу желательно компилировать.И то придётся немного подождать.Быстрее считает PASCAL ABC.)

Если кто-то очень не любит оператор GOTO, то можно и без него.

 CLS

1 INPUT "  n="; n#

 PRINT "  "; n#; "=";

 d# = 1

 i = 1

 n0# = n#

 WHILE d# < SQR(n0#)

 IF d# > 2 THEN i = 2

 d# = d# + i

 n# = n# / d#

 IF n# > INT(n#) THEN

 n# = INT(n# * d# + .1)

 ELSE

 PRINT d#;

 IF n# > 1 THEN PRINT "*";

 d# = d# - i

 END IF

 WEND

 IF n# > 1 THEN PRINT n#

 INPUT "    cont-1"; x

 IF x = 1 THEN 1

 программа на ПаскалеABC(c goto)

  program prmn;

   uses crt; 
   label 1,2,3,4;
   var
   n,d:real;
  x,i:integer;
   begin
 1: write( '   n=');
 readln(n);
 write('   n=');
 i:=1;
 d:=1;
 2:d:=d+i;
 if d>2 then i:=2;
 if d>sqrt(n) then
           begin
  write(n);
  goto 4;       
  end;          
 3:n:=n/d;    
 if n=1 then  
       begin
  write(d);
  goto 4;
  end;
  if n=int(n) then
        begin
  write(d,'*');
  goto 3;
  end;
  n:=int(n*d+0.1);
  goto 2;
 4:write('     cont-1');
 readln(x);
 if x=1 then goto 1;
   end.

Конечно на Бейсике запись получается немного короче.

Программа нахождения простых чисел в определённом диапазоне на Паскале:

  program prch;
 uses crt;
 label 1,2,3,4;
 var
 p,n,m,r,c:real;
  d,i:integer;
 begin
 clrscr;
 write('   n0= (нечёт.или 2) ');readln(r);
 if r=1 then r:=2;
  write('   p=');readln(p);
 if r<3 then i:=1 else i:=2;
 n:=r-i;
 1:n:=n+i;
 if n>p then goto 4;
 m:=sqrt(n);
 d:=1;
 2: d:=d+i;
 if d>m then goto 3;
 c:=n/d;
 if(c-int(c)) =0 then goto 1;
 goto 2;
 3: write(' ',  n,' ');{так в ABC,в Turbo - trunc(n)}
 goto 1;
4:end.

 Программа нахождения простых чисел-близнецов на Бэйсике:

   CLS
 'Программа находит пары близнецов в выбранном диапазоне
 'Пара засчитывается,когда полностью входит в диапазон

 INPUT "(нижняя граница- нечётное число >1)"; N
 INPUT "(верхняя граница -нечётное число)"; P
PRINT "близнецы›"
 
20 M = SQR(N)
 D = 1
40 D = D + 2
 IF (D - M) > 0 THEN 100
 C = N / D
 K = C - INT(C)
 IF K = 0 THEN 140
 GOTO 40
100 IF (N - B) = 2 THEN 120
 GOTO 130
120 PRINT B; N; "; "; ,
 E = E + 1
130 B = N
140 N = N + 2

IF (N - P) = 2 THEN 200

GOT0 20

200 PRINT "E =" ; E

END

Нахождение пар дружественных чисел на РascalABC.

 program dj;
 uses crt;
 label 1,2,10,20;
 var
 n,d,c,i,k,r,d1:integer;
 ss,ss1,c1:real;
 begin
 write('n=');
 readln(n);
 for i:=1 to n do
 begin
 if i mod 10000=0 then writeln(i);
 c:=i;
 ss:=1;
 d:=1;
 1:inc(d);
 if d>=sqrt(c) then goto 2;
 if c mod d<>0 then goto 1;
 ss:=ss+d+c/d;
 goto 1;
2:
 c1:=ss;
 ss1:=1;
 d1:=1;
10:inc(d1);
if d1>=sqrt(c1) then goto 20;
 if trunc(c1) mod d1<>0 then goto 10;
 ss1:=ss1+d1+c1/d1;
 goto 10;
 20:if (trunc(ss1)=i) and (i<trunc(c1)) then
 begin
 inc(k);
 writeln (k,':',i,' ',c1);
 end;
 end;
 end.

Конструктор сайтов - uCoz