a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 131|回复: 0

[C语言] 计算机二级VB常用算法:约数因子算法说明

[复制链接]
发表于 2012-7-31 21:48:08 | 显示全部楼层 |阅读模式
算法说明
* r; _& N6 |+ L  1) 最大公约数:: w/ a0 `+ v0 [' W$ ?( Q1 W$ M$ R9 S
  用辗转相除法求两自然数m、n的最大公约数。( M3 e) }9 J3 a; J  X
  (1) 首先,对于已知两数m、n,比较并使得m>n;
9 y$ L5 R/ X1 l7 ]/ \" A% {/ K  (2) m除以n得余数r;  W6 ?, q: F: _! b
  (3) 若r=0,则n为求得的最大公约数,算法结束;否则执行步骤(4). A# u/ Q% I9 P4 z7 r2 \
  (4) mßn nßr 再重复执行(2)- b7 w/ ^  J$ q$ e
  譬如: 10与5
* b2 z1 W. V7 X: K5 G1 A& x  分析步骤: m=10 n=5" ?8 Q$ c; G! z# }& J* ]
  r=m mod n=0
) X; F' C3 t" t: S  所以n(n=5)为最大公约数1 V! G, x1 ]' {- _" o6 U
  24与9
2 R2 G- r3 Y/ ?  分析步骤: 以下是引用片段:
" Z( G' F+ ?9 J' ?$ L1 j: J3 Z      m=24 n=9
  M- t% x3 y+ S  r=m mod n=6 " p0 B. v- o- v/ o( p
  r≠0 m=9 n=6
3 z/ f9 G1 T- I8 V- U) N, E  r=m mod n=3
6 m6 l% A2 a# T+ ?7 v3 \$ N- a! u  r≠0 m=6 n=3
9 T" g( Q4 N, M1 E  r=m mod n=0 - n5 b2 n" k& X
. l6 O- v* C& W, \
  所以n(n=3)为最大公约数  `; i/ x  g8 k9 b, L+ X, U
  算法实现3 T$ C* K* ], ?1 f( h" i4 x
  循环实现
2 K+ W# ~: ^0 y5 Q以下是引用片段:
  j$ D. ?0 U: O/ z  PRivate Function GCD(ByVal m As Long, ByVal n As Long) As Long $ E5 |3 ?& t! @7 b( }
  Dim temp As Long * r1 K6 \0 }# W0 E( V- I
  If m < n Then temp = m: m = n: n = temp 3 L, f& ]8 y0 H8 n' m  I3 W: z; D
  Dim r As Long
- ]7 V( f$ X+ B: w$ e% g/ O% y  Do
: c3 T. d! E# J5 i  r = m Mod n
1 _! |- R; t+ i9 f  If r = 0 Then Exit Do
& O4 E9 K& O+ [7 O  m = n
1 s& v1 l% f$ c, n  n = r
+ X: X1 A4 @. w: H, C* r0 i0 E9 l  O  Loop
5 V' a1 t/ |1 ]2 m1 c* ^" C  GCD = n , o/ B: {% X& {/ S
  End Function
" c$ ~9 A9 X" i3 y8 n* [. Q( h2 l8 _& d" k9 g9 _- S$ O
  递归实现" `' c- d: d# c" Y; Z/ l- L# K0 t
以下是引用片段:
! ~& f0 Y+ J( b  Private Function GCD(ByVal m As Long, ByVal n As Long) As Long 0 n' ?. n8 U: r& d8 W
  Dim temp As Long ! G+ W$ k% _1 i! z. D% Q& ~
  If m < n Then temp = m: m = n: n = temp # m) R5 C& k. d8 m# G  i
  Dim r As Long
% N; U/ h; v. K: z+ y: ]  r = m Mod n - T+ K- W! N- o9 x0 y3 B+ R
  If r = 0 Then % V% |2 Q7 F* p/ X8 S5 m
  GCD = n ( u2 }4 U, r4 \& F* \+ }' r5 ~
  Else
. X2 L/ O: f2 l+ h* P  m = n
3 ^5 |  B6 V* a  n = r
1 d: v' S& h6 N$ a  W/ [/ T  GCD = GCD(m, n) 3 _( z" }& O1 v
  End If 2 C+ `3 E) O9 H1 L+ O! t( |
  End Function
9 y* M1 i5 Z/ o# l3 P% H+ Z) j2 B1 l) G& p& Q' S; q8 h
  2) 最小公倍数8 T& L/ F( ~7 m1 ?
  m×n÷最大公约数( n2 M8 H1 f3 \3 g6 q; D5 w9 D5 M
  3) 互质数
/ W/ J1 C, a6 ^2 V! Q( K  最大公约数为1的两个正整数
+ C' P% y1 F& \% O# g$ }$ q  解题技巧
& e/ Z* D) _7 H2 ?3 y: }  该算法需要识记!
* M2 d. b5 I7 b' \# |  这种类型题目的扩展是约数和因子题型。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-2 14:43 , Processed in 0.273888 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表