Задачу решить без помощи массивов:Ферма высказал гипотезу: «Любое целое число n является суммой всех трех треугольных чисел,т.е.: n=(x*(x-1))/2+(y*(y-1))/2+(z*(z-1))/2 проверить гипотезу ферма для всех n<100(определить булевскую функцию, определяющую является ли данное число треугольным) - Pascal(Паскаль)

uses crt;
function Trg(n:integer):boolean;
var i:integer;
    f:boolean;
begin
i:=0;f:=false;
while (i<=n)and not f do
if i*(i+1)=2*n then f:=true
else i:=i+1;
Trg:=f;
end;
var n,i,j,k,s:integer;
    f,b:boolean;
begin
clrscr;
s:=1;  //число 0 подходит 0=0+0+0
for n:=1 to 99 do
 begin
  b:=false;
  i:=0;
  while (i<=n)and not b do
  if Trg(i)and(i+j+k=n) then b:=true
  else
   begin
    j:=0;
    while (j<=n-i)and not b do
    if Trg(j)and(i+j+k=n) then b:=true
    else
     begin
      k:=0;
      while (k<=n-i-j)and not b do
      if Trg(k)and(i+j+k=n) then
       begin
        b:=true;
        s:=s+1;
       end
      else k:=k+1;
      if not b then j:=j+1;
     end;
   end;
 end;
if s=100 then write('Гипотеза для чисел 0..99 верна')
else write('Гипотеза для чисел 0..99 не верна');
readln
end.

Leave a Comment

+ 7 = 16