主题:pascal的一道问题,答出加30分
guozhushenyu
[专家分:30] 发布于 2007-05-27 10:39:00
题目如下:
输入一个数,如果这个数是质数,则输出这个数;如果这个数是合数,则输出所有质因数。
回复列表 (共12个回复)
沙发
bigchen [专家分:1940] 发布于 2007-05-27 11:14:00
var
n,i,j,k,l:integer;
function ss(n:integer):boolean;/判断素数
begin
if n=1 then
begin
ss:=false;exit;
end;
for j:=2 to n div 2 do
if n mod j=0 then
begin
ss:=false;exit;
end;
end;
procedure print(n:integer);/如果是合数就输出它个质因数
begin
for i:=2 to n-1 do
if (n mod i=0) and (ss(i)) then write(i,' ');/输出过程:列举数字首先能整除该数字,其次是质数
end;
begin
readln(n);/读入这个数字
if ss(n) then
writeln(n)
else
print(n);
end.
板凳
guozhushenyu [专家分:30] 发布于 2007-05-27 19:19:00
感觉不太看得懂......
很多保留字和函数都没看到过......
3 楼
泡泡糖 [专家分:230] 发布于 2007-05-28 18:53:00
program lt;
var n,m,i,len:integer;
s:array[1..1000] of integer;
begin
write('n =');readln(n);
len:=trunc(sqrt(n));
m:=0;
for i:=1 to n do
if n mod i=0 then
begin
inc(m);
s[m]:=i;
end;
if m<=2 then writeln(n)
else
begin
for i:=1 to m do
write(s[i],' ');
writeln;
end;
end.
4 楼
bigchen [专家分:1940] 发布于 2007-05-28 21:42:00
不是吧????
这已经很简单了!
function是自定义函数
procedure是自定义过程
由自己定义,然后像标准过程函数一样使用就可以了!
5 楼
Matodied [专家分:7560] 发布于 2007-06-09 12:49:00
我记得是这样做的:
FUNCTION isprime(m: INTEGER): BOOLEAN;
VAR
i: INTEGER; f: BOOLEAN;
BEGIN
f := TRUE;
IF m=1 THEN f := FALSE;
FOR i:=2 TO TRUNC(SQRT(m)) DO BEGIN
IF m MOD i=0 THEN BEGIN
f := FALSE;
BREAK;
END;
END;
isprime := f
END;
TYPE
arr=ARRAY[1..3000] OF INTEGER;
VAR
i, r, s, t: INTEGER; k: REAL; f1: BOOLEAN; a: arr;
BEGIN
READLN(s);
t := 1; r := 0;
REPEAT
INC(t);
f1 := isprime(t);
IF f1 THEN BEGIN
INC(r);
a[r] := t;
END;
UNTIL r=3000;
IF isprime(s) THEN BEGIN
WRITELN(s,' = ',s);
END ELSE BEGIN
k := s;
WRITE(s,' = ');
i := 1;
REPEAT
IF k / a[i] = TRUNC(k / a[i]) THEN BEGIN
k := k / a[i];
IF k = 1 THEN BEGIN
WRITELN(a[i]);
END ELSE BEGIN
WRITE(a[i],' * ');
END;
END ELSE BEGIN
INC(i);
END;
UNTIL k = 1;
END;
END.
质数表里只有前3000个质数,所以如果你输入的数过大,会显示出错信息。
[color=FF0000]本人初学PASCAL,请指教!![/color]
6 楼
万里长城 [专家分:340] 发布于 2007-06-09 18:41:00
[quote]不是吧????
这已经很简单了!
function是自定义函数
procedure是自定义过程
由自己定义,然后像标准过程函数一样使用就可以了![/quote]
同意观点
7 楼
迷路的天使 [专家分:1340] 发布于 2007-11-21 18:17:00
[quote][quote]不是吧????
这已经很简单了!
function是自定义函数
procedure是自定义过程
由自己定义,然后像标准过程函数一样使用就可以了![/quote]
同意观点[/quote]
8 楼
【蓝迪】 [专家分:10] 发布于 2008-03-22 16:01:00
人家都给你答案了,你不要装糊涂,赶紧交出三十分!
9 楼
guozhushenyu [专家分:30] 发布于 2008-03-22 22:01:00
不好意思,最近我忙于考试所以分没有及时加上去,真的对不起啊
10 楼
guozhushenyu [专家分:30] 发布于 2008-03-22 22:03:00
没有给大家及时加分是我的错,
程序我已经看懂了....
我来回复