pascal编程求1-10000之间所有质因数的各位数字之和和等于该数各位数字只和的数字例如 34的质因数是2、17,质因数各位数字之和是2+1+7=10,而34的各位数字之和是3+4=7,不符合条件.最好用函数或者
来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 14:18:54
pascal编程求1-10000之间所有质因数的各位数字之和和等于该数各位数字只和的数字例如 34的质因数是2、17,质因数各位数字之和是2+1+7=10,而34的各位数字之和是3+4=7,不符合条件.最好用函数或者
pascal编程求1-10000之间所有质因数的各位数字之和和等于该数各位数字只和的数字
例如 34的质因数是2、17,质因数各位数字之和是2+1+7=10,而34的各位数字之和是3+4=7,不符合条件.最好用函数或者过程完成.
pascal编程求1-10000之间所有质因数的各位数字之和和等于该数各位数字只和的数字例如 34的质因数是2、17,质因数各位数字之和是2+1+7=10,而34的各位数字之和是3+4=7,不符合条件.最好用函数或者
var
i,n,s:longint;
c:array[1..10000] of longint;
function sum(p:longint):longint;
var
i:longint;
begin
repeat
i:=i+p mod 10;
p:=p div 10;
until p=0;
exit(i);
end;
function sumprime(p:longint):longint);
var
i,t:longint;
begin
t:=0;
for i:=1 to s do
while p mod c[i]=0 do
begin
p:=p div c[i];
t:=t+sum(c[i]);
end;
end;
procedure prime;
var
i:longint;
f:boolean;
begin
q:=0;
for i:=2 to 10000 do
begin
f:=true;
for j:=2 to trunc(sqrt(i)) do
if i mod j=0 then
begin
f:=false;
break;
end;
if f then
begin
inc(q);
c[q]:=i;
end;
end;
s:=q;
end;
begin
prime;
for i:=1 to 10000 do
if sumprime(i)=sum(i) then
writeln(i);
end.
没试过不知道对不对.直接打的.自己试试看吧.不对的话改改