pascal程序题目求解

问题描述:

pascal程序题目求解
1.给定数组a,设计一个程序,找出在a中出现频率最高的元素,例如,在(1,3,4,2,3,8,4,3)中数3的出现频率最高,为3
2.如果两个素数之和的一半仍是一个素数,则这三个素数可以组成一个等差素数组,如(3+7)/2=5,则(3,5,7)为一个等差素数组,编程求100以内的所有等差素数组.
3.输入十个数,找出四个相邻的数,使其相加之和最大和最小的各是哪4个数,并给他们的起始位置.
4.若某个自然数的所有小于自身的素数之和恰好等于其自身,则该自然数称为一个完全数.例如:6是一个完全数,6=1+2+3.目前至少发现29个完全数.编程找出三个最小的完全数.
1个回答 分类:综合 2014-10-15

问题解答:

我来补答
1:
var a:array[1..1000] of longint;
a1,a2:longint;
begin
readln(a1);{输入总数};
for a1:=1 to a1 do
begin
read(a2);{输入每个数字};
inc(a[a2]);{这个数字加一};
end;
a2:=0;{清零}
for a1:=1 to a1 do
if a[a1]>a2 then a2:=a[a1]; {看哪个数出现的最多};
write(a2);{输出};
end.
2.
var a1,a2,a3:longint;
a:array[1..1000] of longint;
function ass(a:longint):boolean; {判断素数};
var a1:longint;
begin
ass:=true;
for a1:=2 to trunc(sqrt(a)) do
if a mod a1=0 then ass:=false;
end;
begin
readln(a1);{输入总数}
for a1:=1 to a1 do
read(a[a1]);{输入数组}
for a2:=1 to a1 do
for a3:=a2+1 to a1 do
if (ass(a[a2])) and (ass(a[a3])) and (ass((a[a2]+a[a3]) div 2)) and ((a[a2]+a[a3]) mod 2=0) then writeln(a[a2],' ',a[a3],' ',(a[a2]+a[a3]) div 2);{判断}
end.
3.
var
a:array[1..10] of longint;
a1,a2,a3,a4,a5,a6:longint;
begin
for a1:=1 to 10 do read(a[a1]); {输入}
for a1:=1 to 7 do
begin
a2:=a[a1]+a[a1+1]+a[a1+2]+a[a1+3];
if a3a5) or (a5=0) then begin a5:=a3; a6:=a1; end;
end;{判断哪一组数大}
writeln('大',a[a4],' ',a[a4+1],' ',a[a4+2],' ',a[a4+3],' ',a4,'~',a4+3);
writeln('小',a[a6].' ',a[a6+1],' ',a[a6+2],' ',a[a6+3],' ',a6,'~',a6+3);
{输出}
end.
4. {骗分(*^__^*) 嘻嘻……}
不要50,只要加赏~没事找我
 
 
展开全文阅读
剩余:2000