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. 没试过不知道对不对。直接打的。自己试试看吧。。不对的话改改
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. 没试过不知道对不对。直接打的。自己试试看吧。。不对的话改改
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯