.#0
福建电脑!""#年第$%期
巧用!语言中的!"#$%&’(语句解决数论中的问题
杨爱梅
!河南工业大学河南郑州"#$$#%&
!摘要!运用’语言中的’()*+),-语句来解决数论中的几个问题!给出算法分析和具体程序""关键词!’()*+),-语句公约数公倍数素数
&语言作为一种计算机语言"它功能丰富"表达能力强"使用
灵活方便"应用广泛"目标程序效率高"可移植性好#许多高等学校不仅在计算机专业开设了&语言课程"而且在非计算机专业也开设了&语言课程#全国计算机考试$计算机应用技术证书考试%’()&都将&列入了考试范围#
由于&概念复杂"规则繁多"容易出错#不少出学者感到困难"本文笔者利用&语言中&*+,-+./语句的方便性"编写&程序来解决数论中的几个问题"以激发初学者学习&语言的兴趣#
一#已知两个整数的最大公约数和最小公倍数$如何求这两个整数%
算法分析’%$&假设两个数为0$+102+345"607+84$!"%其中907+3为0$+的最大公约数"607+84$!为0$+的最小公倍数&"可设045:7+45;77则15:75;345"即5%:7;&45"%:7;&4$"得到:$;必定互素#还有65:75;84$!"得到:<=$;<=
%!&又因为数论中有定理107+340>+?607+8"得到0>+45@#算法过程’解题的关键是求出:$;"因为:$;满足以下条件’
!:<=$;<=("#:>;4=(0>+45>:>5>;45@($
#
!%:7;&4A(程序设计
B-+CD.E/FG,E-*HIJ0:-+93K
-+,,707+7:7;L
GC:+M9N0>+4OEP+N7,3L
M*Q1:4AL:F4=L:RR3K
M*Q1;4AL;F4=L;RR3K
-M1=O;3C*+,-+./L?>结束本次循环>?-M1:>;S4=TC*+,-+./L?>结束本次循环>?
-M95>:>5>;S45@TC*+,-+./L?>结束本次循环>?
-M9:O!44%:+E;O!44%TC*+,-+./L?>结束本次循环>?UQ-+,M9N04OE+4OEN75>:75>;TLVV
运行结果’0W+45@↙
045+4$!04$!+4=
二#求)*+,*-.*中/0)012的所有互素的解!
算法分析’9$T这是一个二次不定方程"因为9X"Y"ZT4A"推知9X"YT4A"这时X"Y必定一为奇数"一为偶数"现设Y为偶数"则所给方程在XJ""YJ""ZJ"的情况下的一切正整数解可以写成X4:![;!7\4!:;"Z4:!R;!#"这里:J;J""9:";T4A":";两者一为奇数"一为偶数!所以有:!R;!F=""得:%#"因此"求出:";的所有值便可得X"Y"Z的所有值"也即方程得以求解#
9!T由于:J;"且:";一为奇数"另一为偶数"我们从:开始由A到#"每取一值!让;取遍A到:一A的值"找出满足条件:J;且:与;之差不能被!整除的:";值"此时由:!;值所求出的X"Y"Z为方程的解"当:取完最后一值后"求解过程即全部完成!
程序设计
B-+CD.E/FG,E-*HIJ0:-+9TK
-+,:7;7X7Y7ZL
UQ-+,M9N:;XYZNTLM*Q9:4!L:F4#L:RRTK
M*Q9;4AL;F4:[AL;RRTK
-M9;JA:+E:O;44"TC*+,-+./L?W结束本次循环W?-M99:[;TO!44"TC*+,-+./L?W结束本次循环W?-M9:W:R;W;J5"TC*+,-+./L?W结束本次循环W?UQ-+,M9NOEO]EO]EO]EO]EN7:7;7:W:[;W;7!W:W;7:W:R;W;TLVV
↙
运行结果
:;XYZ!A=5#=!#A!A=5AA#@A^5=^!5!##!!!%!_#5A_5%5A
三#求只有32个正约数的最小正数%
算法分析’9AT由已知共有A%个正约数"即)%:&4A%2而)%:&49:A‘ATH9:!‘ATHHH9:a‘AT7在已知条件下知b的最大值为!"所以得9:A‘ATH9:!‘AT4A%"此时:A和:!的取值只有:A4%":!4_和:A4A":!45两种情况"按照整数:的标准分解式有:4UA:AWU!:!9因b最大值为!T"所以:A$:!的两组解代入标准分界式求出使:值为最小的UA$U!即得#
9!T利用循环语句找出使9:A‘ATH9:!‘AT4A%的所有组解’A&%"_(!&A"5(=&5"A(5&_"%#由于前两组与后两组等价"故只需求出前两组解"在求出:-9-4A7!T的同时求出:7最后比较找出最小的:即得解#
程序设计
B-+CD.E/FG,E-*HIJB-+CD.E/F0:,IHIJ0:-+9TK
-+,-7c7,L-+,a6A%8LM*Q9-4%L-F4AL-‘‘TK
#下转第.#/页$