|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
! k" B7 X8 E* s$ [$ B8 X9 }4 t* J7 y9 @ g, B- U
这个是一个函数,求一个数的真因数
4 ` D+ H( Y0 Q5 x' ~% nfunction y=myfun(n)
$ E: L1 v: R* @- a9 s( a y1=[];. R8 p/ s9 j9 w# V
for i=1:fix(n/2);
0 ]$ A- f, h' \. P* t if mod(n,i)==0;+ {" i2 p; Z& B3 G* K" A
y1=[y1,i,n/i];7 P; x( S( R9 g) c$ L! M
end
^* R6 x- `0 l end
4 o/ _+ D: l" f- u( q3 \ y=unique(y1);
4 v1 h5 a, q! h; k+ W( Nend
& G: l, }/ |$ _6 q. W8 x% I然后我用这个函数求1到1000的亲和数对! q: A! S1 ~5 h8 Z: A4 |' V
for a=1:10000;8 }) E" L# M0 \4 a3 `) O7 V" B" ]3 [/ b
7 {3 N* N+ J! q8 S) H2 `( T" @
b=sum(myfun(a)); %求a的真因数和 为b
% j( X: X3 o# u- r5 s
" c6 ]- e( @1 x c=sum(myfun(b)); %求b的真因数和
$ {0 P9 W& o$ ?+ v6 F) _7 B7 T
2 D f: r( ~. C3 U. E5 x if c==a 6 x) T" u7 M1 m h2 l4 H
; m! \& ~2 R7 o- J) i7 l% ? disp(a) %如果a的真因数和b的真因数相等 则输出a
% u, s: S/ W6 W6 c5 z
8 O% y2 g/ J# j2 e1 [4 ^* S( Z end) t9 n8 c( r6 Z% R& {! C
D, D/ g" Y9 c* C8 m# d7 Y
end7 S% m. h& W0 \! p/ c$ I
t. d6 H# g/ a' X6 e) O3 y& a5 E: W; J1 ?% T2 ^) p. z
9 }' i7 D( I$ o; V- s) G; u- r
7 h0 N8 B+ } m. q' m
但是他不输出任何数,
9 r+ h G0 {9 ?附上亲和数对" K% d' z" L: X6 l- R
亲和数是这样一对正整数a和b,使得a的所有真因子的和等于b,而b的所有真因子的和等于a。( k% Q8 |& F4 ]. `
就是220的真因子是1、2、4、5、10、11、20、22、44、55、110,它们的和是284;284的真因子是1、2、4、71、142,其和恰好是220。这是一对亲和数。1 S9 G% I6 Z4 A' w8 \: y8 p
请教大神,非常感谢! |
|