最小公倍数的最800除以25的简便算法法?

用递归求最小公倍数的算法 -
- ITeye博客
博客分类:
public class Test {
public static void main(String[] args) {
int zxgbs = zxgbs(32,112);
System.out.println(zxgbs);
int zdgys = zdgys(112,32);
System.out.println(zdgys);
//用递归方法求最小公倍数
public static int zxgbs(int x,int y){
if(x%y==0){
return zxgbs(y,x%y);
//两数交换
return zxgbs(x,y);
//调用最小公倍数的方法间接求得最大公约数
public static int zdgys(int x,int y){
int zdgys = (x/zxgbs(x, y))*(y/zxgbs(x, y))*zxgbs(x, y);
QuarterLifeForJava
浏览: 117866 次
来自: 苏州
验证了可以,弄了好久ajax方式上传文件,总算得到了解决 ...
有时间试试看
xu 写道List&String&gt ...
List&String& list = ss.ge ...
yyh 写道这是什么东西啊,那里修改为…… ...君,已阅读到文档的结尾了呢~~
广告剩余8秒
文档加载中
求最小公倍数算法汇总
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
求最小公倍数算法汇总
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口07-0507-0507-0507-0507-0507-0507-0507-0507-0507-05最新范文01-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-01算法训练 最大最小公倍数 &
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入一个正整数N。
输出一个整数,表示你找到的最小公倍数。
1 &= N &= 106。
解题思路:其实看似挺简单的一道题,但是却需要分析一番。虽然知道是用贪心法,下面的代码能ac,但自己的贪心策略远远不够准确,不如最后面的方法简洁准确。自己的分析能力还是很烂。
#include &iostream&
#include &cstdio&
#include &algorithm&
#include &cstdlib&
#define for(i,x,n) for(int i=x;i&n;i++)
#define ll long long int
using namespace
ll gcd(ll a,ll b){
if(b==<span style="color: #){
int main()
ll maxx=<span style="color: #;
scanf("%lld",&n);
if(n%<span style="color: #==<span style="color: #){
printf("%lld",n*(n-<span style="color: #)*(n-<span style="color: #));
return <span style="color: #;
ll t=n*(n-<span style="color: #)/gcd(n,n-<span style="color: #);
for(i,n-<span style="color: #,n+<span style="color: #){
ll lcm=t*i/gcd(t,i);
if(lcm&maxx){
t=(n-<span style="color: #)*(n-<span style="color: #)/gcd(n-<span style="color: #,n-<span style="color: #);
t=t*(n-<span style="color: #)/gcd(t,n-<span style="color: #);
if(t&maxx){
printf("%lld",maxx);
return <span style="color: #;
下面是网上的代码,这是。
首先确定是从大到小开始看,然后考虑到第一个数是奇数时,奇偶奇,其中两个奇数中间差2,但奇数没有因子2。
第一个数是偶数时,n,n-1,n-2是 偶奇偶,这时候两个偶数之间一定会有公共因子2,然后需要n-2再往后推一个取n-3,即n,n-1,n-3(偶奇奇),但这时候要注意,n,n-3之间可能会有公共因子3,
这时候就需要判断n能否被3整除,如果可以,n-3也会被3整除,这样就不能取这三个数了,就不能再取n了,整体往后推一个,取n-1,n-2,n-3.
#include&iostream&
using namespace
int main()
long long n,
if(n&=<span style="color: #)
else if(n%<span style="color: #==<span style="color: #)
ans=n*(n-<span style="color: #)*(n-<span style="color: #);
if(n%<span style="color: #==<span style="color: #)
ans=(n-<span style="color: #)*(n-<span style="color: #)*(n-<span style="color: #);
ans=n*(n-<span style="color: #)*(n-<span style="color: #);
cout&&ans&&
return <span style="color: #;
阅读(...) 评论()蓝桥杯—算法训练 最大最小公倍数
(简单贪心思想) - become789的博客 - CSDN博客
蓝桥杯—算法训练 最大最小公倍数
(简单贪心思想)
算法—贪心
题意分析:在n个数中找任意三个数的最小公倍数,并且求得最大的最小公倍数(重点在于最大)。
思路分析:最大 最小公倍数,联想到两个数的求最大最小公倍数,即两个数的乘积(注:连续的两个自然数是互斥的)。
& & & & & & & & & &同样,我们可以拿最后三个数来做考虑。
& & & & & & & & & &1.当n为奇数时,n,n-1,n-2为奇偶奇,里面只有一个偶数,所以不会有2这个因子。这三个数相差不到3,所以也不会有因子3,故符合题意。
& & & & & & & & & &2.当n为偶数时,n,n-1,n-2为偶奇偶,此时n,n-2肯定含有因子2,所以除于2不&#20540;得。所以考虑将n-2 换成n-3,变成奇偶奇,此时也有一个问题,
& & & & & & & & & &n和n-3,如果n%3==0,则除于3更不&#20540;得。仍根据奇偶奇的原则,变动偶数n为n-2,此时换成n-1,n-2,n-3和1情况一样。故此时符合题意。
#include&stdio.h&
int main ()
scanf(&%lld&,&n);
long long sum=0;
//注意特殊情况,只有一个或者两个数的时候。
sum=n*(n-1)*(n-2);
sum=n*(n-1)*(n-3);
sum=(n-2)*(n-1)*(n-3);
printf(&%I64d\n&,sum);
//学会类比,学会贪心思想(只顾&#30524;前的,但却能得到最优解)
我的热门文章
即使是一小步也想与你分享}

我要回帖

更多关于 最小公倍数算法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信