a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 132|回复: 0

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

[复制链接]
发表于 2012-7-31 21:48:08 | 显示全部楼层 |阅读模式
算法说明7 L, `' \( S  H8 B' _* p% u
  1) 最大公约数:
3 k+ S5 L2 B1 l* Q  用辗转相除法求两自然数m、n的最大公约数。0 P4 |6 _' q" d
  (1) 首先,对于已知两数m、n,比较并使得m>n;
/ C2 O- z# M, X8 @! [% T  l  (2) m除以n得余数r;6 ^+ Q  u- [% U9 u
  (3) 若r=0,则n为求得的最大公约数,算法结束;否则执行步骤(4)
; ~3 A% V& F; I, d; F. i; r  (4) mßn nßr 再重复执行(2). h( c4 a$ E6 c6 k% r. P- o
  譬如: 10与5
3 N9 H& s9 r! c: D1 R  分析步骤: m=10 n=5
' n5 \, I) P. j$ V+ L  r=m mod n=0% k$ G3 e0 ?6 `" L$ {! r, M! }
  所以n(n=5)为最大公约数: k6 ]' A3 }7 T+ P  g" S' E
  24与9
! m3 W, [) I) c% X+ g- C  分析步骤: 以下是引用片段:+ T* P, l5 }' q
      m=24 n=9 + s2 _. \9 R+ Z3 i6 S2 p
  r=m mod n=6
2 x' {0 S" Z, |6 N$ Y  r≠0 m=9 n=6 " N& X- Y) e% ~
  r=m mod n=3 0 n3 X+ |8 i! Y: k' [7 w
  r≠0 m=6 n=3
" j6 U: ]1 o/ A- c3 E  r=m mod n=0 2 f& w7 o7 P( B

; B. _( w, `7 V, J! h, W  所以n(n=3)为最大公约数8 A! ?  v: B; G" Z1 G4 V, G2 \' V
  算法实现# F! H* o9 v: [
  循环实现
  h) m  M8 D7 I8 `. j以下是引用片段:% I% N, k8 `: R
  PRivate Function GCD(ByVal m As Long, ByVal n As Long) As Long   I+ ^; `/ j  S! \
  Dim temp As Long
: T% j1 F1 @2 s/ N* E# e' Q4 Q  If m < n Then temp = m: m = n: n = temp
& r+ g* X6 N2 i: f( @$ ^+ N3 |3 m  Dim r As Long
1 O4 A. _" Q$ e- U0 I  Do & X1 d4 h' Q( \& O" Z( L
  r = m Mod n - p+ G) w+ C9 X
  If r = 0 Then Exit Do
$ A- ]" @& G( p% N( @  m = n - Q. d5 b# c+ G( }3 `% w
  n = r * m- Z' l4 O3 p; B: ^- c
  Loop
: y* K- z3 S0 n$ g" D0 ?  B  GCD = n
: G% t: X9 y! [) G0 M5 c  End Function 8 s. k# Q# h, u1 s# ?

7 h, @  d' @1 s( s- T) V1 L" E  递归实现
# W9 A. J- e4 s* `1 W! i6 b/ `* d以下是引用片段:
5 e1 j" a# G4 c  Private Function GCD(ByVal m As Long, ByVal n As Long) As Long ' u3 ^& l( A- J6 e+ o1 [8 ~
  Dim temp As Long
2 Q5 L* S% R( o& B! K" S; f  If m < n Then temp = m: m = n: n = temp
, F, Z# b8 `& I* C% l7 [  Dim r As Long ' g  L, V1 P2 [5 @: e  R
  r = m Mod n 1 a# U% t+ k% q1 `9 R4 z# j" _
  If r = 0 Then 0 W& g. M: ]2 J' ?8 I3 U# V+ y
  GCD = n
- z, \' u5 t5 d4 e) D  Else
' ?; e9 G9 _, e& j* J! b- v7 W  m = n * n/ c, A- \& w) E  Q& w% r
  n = r 7 u9 {8 V: X  }  z/ T
  GCD = GCD(m, n)
7 k; M2 Y; l- d5 P; y  End If
* G; t- c' O3 U- l5 b. t  End Function
) |+ R$ _4 n: A5 i9 M3 v
7 ^# w- X1 n) F9 R+ M  2) 最小公倍数
9 \0 S. ^6 b! d9 {* o) }  m×n÷最大公约数  ^8 H1 G5 Q! P, Y( ~6 Q$ V
  3) 互质数2 m/ {; J7 g! A. b% [  K# A' l" Y
  最大公约数为1的两个正整数2 q  m* T/ Q% B+ @, _4 t6 J
  解题技巧) G0 T! I7 K( g+ P5 h: U
  该算法需要识记!
5 n8 d) ^0 S9 Z, L$ @; |, Z& ?! L7 J  这种类型题目的扩展是约数和因子题型。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-11 16:12 , Processed in 3.205754 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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