|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
* [! Y3 A- D: I# o5 j0 O
; i+ P" u$ d. [ k" K0 g! L这个是一个函数,求一个数的真因数; g+ I# f0 u" p2 s. B$ X
function y=myfun(n)
' B1 f7 q- K( Z) o, k. z( e" O y1=[]; k6 t4 e( b& N5 b+ N
for i=1:fix(n/2);
) ~6 y" ^6 ]4 o, K1 `$ g if mod(n,i)==0;% J4 o, l5 W/ W! d
y1=[y1,i,n/i];
: J, }' X; t! F7 g8 I end& A( g! g7 P0 b2 x3 X
end! U: H, Q3 ?- K! ], r0 O$ @2 w
y=unique(y1);
9 e' h/ I3 J4 A' l6 aend6 |# \+ a( D/ w: g1 c: M5 S
然后我用这个函数求1到1000的亲和数对0 P+ v! H! W p; C" S5 J
for a=1:10000;
9 H8 o& Q2 _0 P0 v
* f D. \8 f$ j9 w( [3 k5 _& u b=sum(myfun(a)); %求a的真因数和 为b/ B1 A3 N+ F( V9 o
1 Q$ @' ]- \$ b4 }6 W5 U c=sum(myfun(b)); %求b的真因数和2 @4 m. s; L/ q* x. L
) s1 [) k/ o& M4 \3 o" A. t7 D: k: B if c==a 7 D& @: X6 `6 ]! g0 P; w2 e
2 d: K* U3 z6 a( k disp(a) %如果a的真因数和b的真因数相等 则输出a5 k3 N1 E& G' x# V
7 K" n3 A6 ?- V4 Z0 ]4 p9 J
end; j1 K( o* `* s" R, V# W
$ D" z6 p( N% {6 {' f) D/ }& j
end2 g v5 W+ N' g8 ]
6 u: h7 x$ M6 \2 ^ w2 D
/ x3 \# Q0 I- [8 K6 m4 B) ^: F
v* L' [" J" n% H) v9 B6 X
: R5 G9 b9 _" Z 但是他不输出任何数,% O! ]2 I, P1 R g9 n
附上亲和数对; G: O) O4 M# i c' t1 y
亲和数是这样一对正整数a和b,使得a的所有真因子的和等于b,而b的所有真因子的和等于a。' N: v# V' d8 S9 y
就是220的真因子是1、2、4、5、10、11、20、22、44、55、110,它们的和是284;284的真因子是1、2、4、71、142,其和恰好是220。这是一对亲和数。
! V! Q$ f9 z4 L# g% e U& r请教大神,非常感谢! |
|