|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
% t. G% J2 n+ `# ]" W
. u( F8 |4 h% h/ v8 E这个是一个函数,求一个数的真因数
% E9 H! H: s3 \ N5 ^function y=myfun(n): s! s' l9 T* | g" m7 {0 B
y1=[];6 Q) ]- f) a8 A
for i=1:fix(n/2);
2 ? D! z& B5 m: r( Z5 M if mod(n,i)==0;
9 a! }) J" f1 e+ e+ W y1=[y1,i,n/i];8 g! t! |5 e; H
end. Q) x" E; M. B: L
end- [' c! D9 O+ J
y=unique(y1);
! k4 W% c/ w: V+ x# E: ^/ Hend5 G" l T# v" ^, W+ T
然后我用这个函数求1到1000的亲和数对* E+ [: V' F1 }2 ~+ f) D) I! c
for a=1:10000;
! M+ Y- t ^- E8 x9 b- t, J! `/ R' r' p) {
b=sum(myfun(a)); %求a的真因数和 为b5 U5 ^" t1 n, p$ `9 W0 S
$ F) i7 G. u0 v3 N* E/ r& x c=sum(myfun(b)); %求b的真因数和
1 p) H3 k- X; s" a; M9 i7 v+ R9 R5 J7 K4 l. q1 _) N: K' s
if c==a
2 t- H, V% E3 w% \9 B7 J4 ]3 H, M9 F. @ {$ h2 b" r6 k Z/ j9 p7 |- `
disp(a) %如果a的真因数和b的真因数相等 则输出a, w" b% ]" Z* E2 E: z
/ O& F2 ]9 c( l0 ?' j z end
# {+ V2 C; M1 @4 }* ?2 `1 L1 u
% C0 @* y' x* N" Z7 }( a$ Mend& \4 j/ [3 m" _3 @1 ^( H. K
, G" R1 [. f' v: k+ u0 i/ J) R1 S2 Q
- S2 ~' l+ f, o8 y
2 P5 m9 {, T2 L1 C( i! ~ 但是他不输出任何数,
& t1 _; W( T4 e3 c# Z4 p- V# C" d附上亲和数对
3 J, V9 a: `5 C- o& K0 q# R$ S7 i亲和数是这样一对正整数a和b,使得a的所有真因子的和等于b,而b的所有真因子的和等于a。+ {! F5 d4 t) L, p% K
就是220的真因子是1、2、4、5、10、11、20、22、44、55、110,它们的和是284;284的真因子是1、2、4、71、142,其和恰好是220。这是一对亲和数。9 E- J ^$ g( X# n- g
请教大神,非常感谢! |
|