|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
. X2 T" H( \- U h% n; X
) a+ R1 E% H$ [- k/ f这个是一个函数,求一个数的真因数
% k, S! s/ ]$ G1 qfunction y=myfun(n)
$ o* D- P- u/ Z% n+ V1 N y1=[];+ j B; ?7 k6 m+ p- f
for i=1:fix(n/2);( u) T0 h4 H# M' T& B# h
if mod(n,i)==0;
% B) p% x0 A- a/ ]; y y1=[y1,i,n/i];
* N; W* _; P' h& B; N. z; i& y end$ p/ I) y" V+ @9 P* D3 M7 S) @! p
end5 z! }6 b. _ d7 H0 y
y=unique(y1);
$ F3 y' `4 I+ ]end
% p3 f" Q+ Z& P, }3 H- z然后我用这个函数求1到1000的亲和数对
9 L' S1 b" t4 t& I$ _for a=1:10000;, }6 N) K" n5 U' L
1 Q4 `' X+ ?0 I( E* u
b=sum(myfun(a)); %求a的真因数和 为b
8 v( }# ?+ V8 T
6 C+ x! i/ S# v c=sum(myfun(b)); %求b的真因数和8 B4 u, y$ P0 f% u' F* c0 b3 J
: [1 I" c& ?3 E+ x' ]# g if c==a
/ T2 \% h J$ f) ?
4 w$ i4 P0 f0 I8 R+ A# s, v disp(a) %如果a的真因数和b的真因数相等 则输出a& d5 [: k* d8 d1 d& N' [6 z/ q
3 f# j- \9 I6 N) ]9 v4 A1 O3 K+ a4 B, s
end
- G5 P* H3 o5 @, Z* l7 O; c* U! t8 W
end. J; T+ N: g0 m6 Z! \3 n% p% o9 E' ?5 I* B6 B
9 x. `, N+ B- A3 O+ e0 Z( @/ K- I; n
0 W! u$ s0 @/ A& v( g
/ a- I. S, X, ^5 F3 |: _ Z
) ]" _' o! D2 x& p! j! |* t 但是他不输出任何数,# F0 l5 k/ m2 L0 g
附上亲和数对 i: ~/ N+ }0 r# }
亲和数是这样一对正整数a和b,使得a的所有真因子的和等于b,而b的所有真因子的和等于a。3 \3 D, ^, }7 K3 F5 ]' q
就是220的真因子是1、2、4、5、10、11、20、22、44、55、110,它们的和是284;284的真因子是1、2、4、71、142,其和恰好是220。这是一对亲和数。8 Q: }7 w6 x' H% H) X
请教大神,非常感谢! |
|