30充一百话费的可靠嘛?:谁知道如何用TurboPascal来编一个有关“如何判断质数”的编程呢

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/15 06:34:49
就是你输入一个数,电脑会根据你编的编程来判断这个数是不是质数。
如果知道这个程序如何编的话,就将整个程序都写出来。
谢谢!

program test;
const
n=999; {设置计算的数的最大值,以确定数组上界}
var
max:integer;

function check(max:integer):boolean;
var
i,j:integer;
list:array[1..n] of boolean;
begin
for i:=1 to n do
list[i]:=true;
for i:=2 to (max div 2) do
begin
if list[i] then
for j:=i to max do
begin
if (j mod i=0) then
list[j]:=false;
end;
end;
check:=(list[max]); {true=质数 fals=和数}
end;

begin
writeln('input the num:');
readln(max);
writeln(check(max));
end.

呼 好久没有写pascal了
原理就是做一个两层的循环,如果一个数是质数的话显然它只能被1整除,因此最容易的做法就是做一个循环用小于n的数来整除,看是否能除尽。
但是事实上大于根号n的数是不可能整除n的,因此循环只需要做到根号n就可以了。不过因为忘了pascal里面开根号是啥所以用了一个n/2来代替。
按照这个思想的话单单判断一个数是否是质数就比较简单了。
上面这个程序更进一步,求出了1-n之间的所有质数。不过时间复杂度很高。

回楼下的,偶最开始是搞奥赛,用的是FreePascal。在FP里面的注释是支持用//来表示的。不过这个在TurboPascal里面还是没法儿通过,保险起见还是改了。

pascal早忘完了哦, c还知道如何写啦

ranjiao是不是学Java或者是网页了?
Pascal里的注释应用{}(大括号)
楼主,你看看这段代码,或许会有帮助。
var
i,k,kend,t,m,n,q:integer;
yes:boolean;
continue:char;
begin
writeln('Now let us calaulate m&n primary:');
continue:='Y';
while continue='Y' do
begin
write('Please enter m&n (m<n,integer):');
readln(m,n);
if m>n then begin
q:=m;
m:=n;
n:=q;
end;
t:=0;
for i:=m to n do
if odd(i) then
begin
yes:=true;
kend:=trunc(sqrt(i));
for k:=2 to kend do
if i mod k=0 then yes:=false;
if yes then
begin
write(1:8);
t:=t+1;
end;
if t=5 then
begin
writeln;
t:=0;
end;
end;
writeln;
write('Continue? (y/n)');
readln(continue);
continue:=upcase(continue);
end;
writeln('OK.Good Bye!');
end.
可能编译不成功,但你看看方法。