永发信息网

pascal编程求1-10000之间所有质因数的各位数字之和和等于该数各位数字只和的数字

答案:2  悬赏:70  手机版
解决时间 2021-03-21 06:04
  • 提问者网友:溺爱和你
  • 2021-03-20 20:04
例如 34的质因数是2、17,质因数各位数字之和是2+1+7=10,而34的各位数字之和是3+4=7,不符合条件。最好用函数或者过程完成。
最佳答案
  • 五星知识达人网友:酒安江南
  • 2021-03-20 21:27
1. var 

2.   i,n,s:longint;
3.   c:array[1..10000] of longint;
4.

5. function sum(p:longint):longint;
6. var
7.   i:longint;
8.

9. begin
10.   repeat
11.      i:=i+p mod 10;
12.     p:=p div 10;
13.   until p=0;
14.   exit(i);

15. end;
16.

17. function sumprime(p:longint):longint);
18. var
19.   i,t:longint;
20.

21. begin
22.   t:=0;

23.   for i:=1 to s do
24.      while p mod c[i]=0 do
25.          begin
26.              p:=p div c[i];
27.              t:=t+sum(c[i]);

28.          end;

29. end;
30.

31. procedure prime;
32. var
33.   i:longint;
34.   f:boolean;
35.

36. begin
37.   q:=0;

38.   for i:=2 to 10000 do
39.     begin
40.       f:=true;

41.       for j:=2 to trunc(sqrt(i)) do
42.         if i mod j=0 then
43.           begin
44.               f:=false;
45.               break;
46.            end;
47.       if f then
48.         begin
49.             inc(q);
50.             c[q]:=i;

51.         end;

52.     end;
53.   s:=q;

54. end;
55.

56. begin
57.   prime;

58.   for i:=1 to 10000 do
59.     if sumprime(i)=sum(i) then
60.        writeln(i);
61. end.
62. 没试过不知道对不对。直接打的。自己试试看吧。。不对的话改改
全部回答
  • 1楼网友:十年萤火照君眠
  • 2021-03-20 21:38
1. var  2.   i,n,s:longint; 3.   c:array[1..10000] of longint; 4. 5. function sum(p:longint):longint; 6. var 7.   i:longint; 8. 9. begin 10.   repeat 11.      i:=i+p mod 10; 12.     p:=p div 10; 13.   until p=0; 14.   exit(i); 15. end; 16. 17. function sumprime(p:longint):longint); 18. var 19.   i,t:longint; 20. 21. begin 22.   t:=0; 23.   for i:=1 to s do 24.      while p mod c[i]=0 do 25.          begin 26.              p:=p div c[i]; 27.              t:=t+sum(c[i]); 28.          end; 29. end; 30. 31. procedure prime; 32. var 33.   i:longint; 34.   f:boolean; 35. 36. begin 37.   q:=0; 38.   for i:=2 to 10000 do 39.     begin 40.       f:=true; 41.       for j:=2 to trunc(sqrt(i)) do 42.         if i mod j=0 then 43.           begin 44.               f:=false; 45.               break; 46.            end; 47.       if f then 48.         begin 49.             inc(q); 50.             c[q]:=i; 51.         end; 52.     end; 53.   s:=q; 54. end; 55. 56. begin 57.   prime; 58.   for i:=1 to 10000 do 59.     if sumprime(i)=sum(i) then 60.        writeln(i); 61. end. 62. 没试过不知道对不对。直接打的。自己试试看吧。。不对的话改改
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯