帮我解决一道pascal题

王朝知道·作者佚名  2009-07-13
窄屏简体版  字體: |||超大  
 
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
 
問題描述:

从文件读入整数N(N〈=20)和N个[10,400]之间的自然数。

(1)求这N个数中合数组成的升序序列;

(2)求上述序列中每相邻两数的最大公约数中的质数序列。

例如:输入:9

63 13 77 143 57 28 56 45 30

输出:28 30 45 56 63 77 143

2 7 7 11

參考答案:

const maxn=20;

var

fname:string;

a:array[1..maxn]of integer;

p:array[1..400]of boolean;

n:integer;

fin:text;

function gcd(a,b:integer):integer;

begin

if b=0 then gcd:=a else gcd:=gcd(b,a mod b);

end;

function ss(a:integer):boolean;

var i:integer;

begin

ss:=true;

for i:=1 to a do if a div i=0 then ss:=false;

end;

procedure sort;

var i,j,t:integer;

begin

for i:=1 to n-1 do

for j:=1 to n do

if a[i]<a[j] then begin

t:=a[i];a[i]:=a[j];a[j]:=t;

end;

for i:=1 to n do write(a[i],' ');

end;

procedure gcdp;

var i:integer;

k:array[1..maxn]of integer;

begin

for i:=1 to n-1 do k[i]:=gcd(a[i+1],a[i]);

for i:=1 to n-1 do if ss(k[i]) then write(k[i],' ');

end;

procedure init;

var i:integer;

begin

readln(fname);

assign(fin,fname);

reset(fin);

readln(n);

for i:=1 to n do read(a[i]);

close(fin);

end;

begin

init;

sort;

gcdp;

readln

end.

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航