Viết chương trình pascal nhập số n xuất ra màn hình. - kiểm tra n có phải là số nguyên tố ko? -các số chính phương từ 0 đến n. - các số nguyên tố từ 2 đến n. LƯU Ý: chỉ được DÙNG while...do,KHÔNG ĐƯỢC DÙNG for.. to..do nha ## Mình cần rất gấp nên mong mọi người giúp mình. Cảm ơn nhiều!!!

2 câu trả lời

Program BTT;
Uses crt;
Var n,i: longint; 

Function ngto(a: longint): boolean;
Var i: longint;
Begin
        If a<2 then exit(false);
        i:=2;
        While i<= n div 2 do
        Begin
                If a mod 2 = 0 then exit(false);
                inc(i);
        End;

        Exit(true);
End;

Function cp(a: longint): boolean;
Begin
        If a=sqr(trunc(sqrt(a))) then exit(true);
        Exit(false);
End;


Begin
        Clrscr;
        Write('Nhap n: '); Readln(n);

        If ngto(n) then Writeln(n,' la so nguyen to')
        Else Writeln(n,' khong phai so nguyen to');

        i:=0;

        Write('Cac so chinh phuong tu 0 - ',n,': ');
        While i<=n do
        Begin
                If cp(i) then Write(i,' ');
                inc(i);
        End;

        Writeln;

        i:=2;

        Write('Cac so nguyen to tu 2 - ',n,': ');
        While i<=n do
        Begin
                If ngto(i) then Write(i,' ');
                inc(i);
        End;

        Readln
End.

var n,i,c:longint;
function checkprime(x:longint):boolean;
begin
        if x=1 then exit(false);
        c:=2;
        while c<trunc(sqrt(n)) do begin if x mod c = 0 then exit(false); inc(c); end;
        exit(true);
end;
function chinhphuong(x:longint):boolean;
begin
        if sqrt(x) = trunc(sqrt(x)) then exit(true);
        exit(false);
end;
begin
        write('Nhap n: '); read(n);
        if checkprime(n) then writeln('N la so nguyen to') else writeln('N khong phai la so nguyen to');
        i:=0;
        while i<n do begin if chinhphuong(i) then write(i,' '); inc(i); end;
        writeln;
        i:=1;
        while i<n do begin if checkprime(i) then write(i,' '); inc(i);  end;
        readln;
        readln;
end.