|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
4 i; Q6 G* K+ e' q
2 v1 M6 Q+ T( o$ b$ M' _这个是一个函数,求一个数的真因数
2 `! v1 V( @5 k0 x3 E4 L- n- N' Xfunction y=myfun(n)
! M+ @/ [2 I, h1 _9 Y/ l1 y' O" E y1=[];- [# Q9 F8 P! l$ o0 a, A3 H
for i=1:fix(n/2);
5 j& u& {$ y. @( [/ z2 Z' a' _ if mod(n,i)==0;8 C( K- G. L+ |; c; F
y1=[y1,i,n/i];9 b0 n, S: c0 _9 j; F; j
end- l! p: g& z: X1 O8 H- p
end
8 z( a' J% c6 u* o$ R$ D) q y=unique(y1);
3 `1 a, \& A9 V. cend6 B- f3 f& ]9 v# X5 h
然后我用这个函数求1到1000的亲和数对
; d+ V% s. {/ Q, _, e) gfor a=1:10000;
; K8 }4 \( i7 C! n& V
% p. D/ N! p2 }7 \1 E, }$ m' J i3 t b=sum(myfun(a)); %求a的真因数和 为b
1 K# ^: ~! C- S4 t. E1 l8 V- |% B6 h3 Z' U9 E0 Y! Q7 @# q* y
c=sum(myfun(b)); %求b的真因数和
9 o; Y# a @& C: e+ r2 J+ \2 O! c% H0 s, _. ?6 \/ Z
if c==a # R: S1 @% r5 W: Z$ ] s+ ?
' o% s1 w/ h) w9 S disp(a) %如果a的真因数和b的真因数相等 则输出a
* b1 }9 d8 _3 M! ?" i% ?
- f8 ]$ k2 u9 X% f8 A end5 [* W Q3 q! t$ Y# I
7 O) J: _9 p- N3 j m
end ~/ T# M9 D8 U$ @
5 ]+ J! F. u( {) V" p
! c5 X1 u% v3 Y7 }. [
1 W0 D9 B5 l% l: ~6 Z+ ~9 X& h+ s/ F% Y Q. z9 w8 h5 N0 I2 F9 s
但是他不输出任何数,
' w' N" ]7 R- g3 K附上亲和数对
) E7 o9 X; m) C+ [' [亲和数是这样一对正整数a和b,使得a的所有真因子的和等于b,而b的所有真因子的和等于a。* O A; C+ i# |. F
就是220的真因子是1、2、4、5、10、11、20、22、44、55、110,它们的和是284;284的真因子是1、2、4、71、142,其和恰好是220。这是一对亲和数。. Z( `! H* r/ P; r/ z
请教大神,非常感谢! |
|