|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
+ q5 P$ _/ z6 W8 o
. ^' C" L0 x- h这个是一个函数,求一个数的真因数
1 W- u4 A: u2 p2 I9 B$ yfunction y=myfun(n)
# W3 P" t, o0 R3 D* m- C y1=[];+ [ D; u# C' ?6 V
for i=1:fix(n/2);
$ k1 e5 y" ]" s9 }: l1 k if mod(n,i)==0;0 U$ B( B- C: D0 x# u( m/ _6 ~
y1=[y1,i,n/i];4 Z, \1 s9 a. l9 b: @
end8 w9 e$ k3 N' P' R
end
2 X O3 D/ L( }( F y=unique(y1); ) @( i% C! o; Y* c& m( q' p( P
end
( C+ P8 o8 h3 A- F! R X然后我用这个函数求1到1000的亲和数对+ ~1 R5 s7 V# r5 n0 l
for a=1:10000;
/ r$ z; D9 i# A5 K# v7 E6 h) R* y. }8 J8 k4 z) g9 V
b=sum(myfun(a)); %求a的真因数和 为b
2 ]# H3 Z' h' p4 n6 o6 O+ { R0 {: _8 u& Y& c! X
c=sum(myfun(b)); %求b的真因数和$ i, f8 t. e4 X& Y
7 _0 k$ |$ K2 n- |
if c==a / j: w6 r) T; }" x8 m. e, D8 h+ ?
+ ]- e) M6 F, X3 y/ g
disp(a) %如果a的真因数和b的真因数相等 则输出a
# K9 Y0 W9 r; v# j R3 f4 l$ h, t$ G& [7 h2 p; M6 R/ s7 e
end) e8 A: k# c! ^! O3 Q- T% ^1 w2 w
# v; I5 H7 B( {' Q4 _6 Dend
9 G2 L0 z1 n; ^2 r. X$ G" L0 G( d
- ~' `$ K1 N/ J! T! `
1 o- |3 `( i2 I) Y3 u( O( _) K# D, ^0 m
但是他不输出任何数,
* |' D$ {4 k- O: q* A. q附上亲和数对, e, K; B' r. v3 W+ {- Z5 Q1 j
亲和数是这样一对正整数a和b,使得a的所有真因子的和等于b,而b的所有真因子的和等于a。; T- C6 r8 b# H8 }% _
就是220的真因子是1、2、4、5、10、11、20、22、44、55、110,它们的和是284;284的真因子是1、2、4、71、142,其和恰好是220。这是一对亲和数。8 w" n# V9 D1 M& G- b' L" ~% N
请教大神,非常感谢! |
|