pascal语言for

题目是如果整数A的全部因子(包括1,不包括A本身)之和等于B,且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数.求3000以内的全部亲密数.... 题目是 如果整数A的全部因子(包括1,不包括A本身)之和等于B,且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数.求3000以内的全部亲密数.
(要求:A < B )
这是我编写的程序
program Project1;
var
a,i,b,E,S:longint;
begin
for a:= 3 to 3000 do
begin
S:=0; E:=0;
for i:=1 to i-1 do
if (a mod i =0) then
S:=S+i;

for b:=1 to S-1 do
if (S mod b =0) then
E:=E+b
end;
if (a=E) and (a<S) then
writeln(a,' ',S);
readln;readln;
end.
请教哪个高手帮我看看错在哪里,演示的时候就是跑不出答案
展开
 我来答
听不清啊
高粉答主

2013-08-28 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:2亿
展开全部
program Project1;
var
a,i,b,E,S:longint;
begin
for a:= 3 to 3000 do
begin
S:=0; E:=0;
for i:=1 to a div 2 do {这里原来的i-1是错了的,a-1也可,只是做了一半无用功 }
if (a mod i =0) then S:=S+i;

for b:=1 to S div 2 do
if (S mod b =0) then E:=E+b;
if (a=E) and (a<S) then writeln(a,' ',S); {这个输出语句必须写在循环内部才行,否则没有输出}
end;
end.
更多追问追答
追问
怎么安排到内部 ,能完完整整写一遍给我看吗
怎么放在内部 还是不可以 能完整写一遍吗
peter987662
2013-08-28 · TA获得超过1330个赞
知道小有建树答主
回答量:1117
采纳率:0%
帮助的人:1222万
展开全部

循环结束的end放错地方了,而且这个程序效率也有些低,效率问题你自己考虑吧,我只该前面那个问题

program Project1;
var
a,i,b,E,S:longint;
begin
 for a:= 3 to 3000 do
   begin
   S:=0; E:=0;
   for i:=1 to i-1 do
   if (a mod i =0) then
   S:=S+i;

   for b:=1 to S-1 do
   if (S mod b =0) then
   E:=E+b
   {这个end;放错了}
 if (a=E) and (a<S) then
 writeln(a,' ',S);
 end;{放在这就对了}
 readln;readln;
end.
追问
end;放过去也没用 还是点完演示 输不出亲密数
追答
program Project1;
你写错啦
var
a,i,b,E,S:longint;
begin
for a:= 3 to 3000 do
begin
S:=0; E:=0;
for i:=1 to a-1 do{是a不是i}
if (a mod i =0) then
S:=S+i;

for b:=1 to S-1 do
if (S mod b =0) then
E:=E+b
{这个end;放错了}
if (a=E) and (a<S) then
writeln(a,' ',S);
end;{放在这就对了}
readln;readln;
end.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式