|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
$ r2 N, B' w' T0 l* q# {: b* E& J/ ?0 g" L0 t, @ @
这个是一个函数,求一个数的真因数
& m, a+ J$ {% T, M) }6 hfunction y=myfun(n)
; o! y; ^# Z* W8 V( l; y% v y1=[];
6 f& |. N: y1 ?: V u0 j for i=1:fix(n/2);
4 A$ m z& \1 T+ m: { if mod(n,i)==0;* B1 J C9 R5 U
y1=[y1,i,n/i];4 k# C' v1 b7 F4 w4 N5 w
end& W* f+ O. y: I# K0 y8 ^
end% b" `; N8 H- ?, }/ r( [
y=unique(y1);
% x0 }( A) J# l0 Wend9 v, e7 |: H6 `. ^. M' ]
然后我用这个函数求1到1000的亲和数对2 g% R0 y- @0 _( ]& u- L
for a=1:10000;
2 q7 T4 N+ P: }5 s
$ L4 L; R/ s- h* a! J9 I. y8 | b=sum(myfun(a)); %求a的真因数和 为b# ~8 \# B" X0 V0 t( N. U
- g& l/ _4 n! c
c=sum(myfun(b)); %求b的真因数和% R- s; i; N* h; P9 O
- v/ {( H3 g7 i% A if c==a
R' g4 v) W$ G* |# n5 c, `! j4 i! M
8 u( C' v/ Z6 Y, Y) I( W4 }4 y disp(a) %如果a的真因数和b的真因数相等 则输出a
3 s7 z5 w+ d/ K3 J& D/ P, q" e; e t! V8 J0 {
end
+ g! z% x. m1 |9 {* q3 s
6 Y# Z6 G! D$ r& P+ R8 |" p8 Lend7 G Q/ O$ |0 V( } w4 y4 _
4 d9 s$ a4 ]# ]/ K7 N$ V
% M# @1 E6 P+ O+ p% @+ D/ Y" K% w
; z! e1 m# G- D+ D" T# A! a
{9 L# H- Y$ B l4 m 但是他不输出任何数,
% ~' ^9 q1 b$ Q% o附上亲和数对( M4 ^" t- k% B+ H9 {8 P
亲和数是这样一对正整数a和b,使得a的所有真因子的和等于b,而b的所有真因子的和等于a。. c0 N/ @& l$ L$ j/ O
就是220的真因子是1、2、4、5、10、11、20、22、44、55、110,它们的和是284;284的真因子是1、2、4、71、142,其和恰好是220。这是一对亲和数。2 F% a! M# W( x$ }% X
请教大神,非常感谢! |
|