printf-c语言求最小公倍数 求大神帮我理解下这个代码

问题描述

c语言求最小公倍数 求大神帮我理解下这个代码
#include
int main()
{
? ?int mnik=1;
? ?scanf(""%d %d""&m&n);
? ?for(i=1;i<=m;i++)
? ?{
? ? ? ?if(m%i==0 && n%i==0)
? ? ? ?{
? ? ? ? ? ?k*=i;
? ? ? ? ? ?m/=i;
? ? ? ? ? ?n/=i;
? ? ? ?}
? ? ? ?if(m==1 || n==1)
? ? ? ? ? ?break;
? ?}
? ?printf(""%d""k*m*n);
? ?return 0;
}

我的代码是:
#include
int main()
{
int mnil=1jk;
scanf(""%d%d""&m&n);
j=m;
k=n;
for(i=2;i<=m&&i<=n;i++)
{
while(j%i==0 && k%i==0)
{
j/=i;
k/=i;
l*=i;

    }}        l=l*j*k;printf(""%dn""l);return 0;

}
我的想法是先求出最大公约数,再乘上m和n自己剩下的质因数 即求得结果
并且是从2开始除,将所有能整除的2全部除尽在除以3

而最上面提问的那个代码,我不明白为什么只除一遍就可以。。 还有那个for语句中的i<=m,m是随时会变的值,并且不用判断m和n的大小吗?

求大神详解~!

解决方案

上面那个代码的思路是求出最大公因数k,并且将m n在数公因数的过程中缩小到m/k和n/k 如此相乘可得最小公倍数。事实上代码思路跟下面那个一样。

解决方案二:
以上的代码是一种经典的方法(求最小公倍数的算法), 叫辗转相除法,你可以百度一下。你会发现它的时间效率只有O(n).所以广泛的被程序员们
采纳...

解决方案三:
以上的代码是一种经典的方法(求最小公倍数的算法), 叫辗转相除法,你可以百度一下。你会发现它的时间效率只有O(n).所以广泛的被程序员们
采纳...

解决方案四:
至于代码逻辑很简单啦。主要是你要能够理解他的思路

解决方案五:
至于代码逻辑很简单啦。主要是你要能够理解他的思路

解决方案六:
这是我上学期间画的(求最大公约数)。给你提供思路。

时间: 2025-01-01 17:40:37

printf-c语言求最小公倍数 求大神帮我理解下这个代码的相关文章

求解释-求大神帮看看这段汇编代码

问题描述 求大神帮看看这段汇编代码 学校课程设计,这段是步进电机的控制代码,用键盘输入,在六位LED七段数码显示管上显示,求大神把下面代码加上注释,实在不行就帮忙看下键盘显示那部分是怎么回事,有重谢. ORG 0A30H ;? MONIT: MOV SP,#50H MOV 7EH,#00H MOV 7DH,#02H MOV R0,#7CH MOV A,#08H MOV R4,#04H MONIT1: MOV @R0,A DEC R0 DJNZ R4,MONIT1 MOV A,#7EH MOV D

用java开发一个安卓客户端在线交流APP,是怎么实现添加好友的?求大神帮我看看这段代码。

问题描述 用java开发一个安卓客户端在线交流APP,是怎么实现添加好友的?求大神帮我看看这段代码. private void submit() { dialog = ProgressDialog.show(this, "提示", "处理中.."); new AsyncTask() { @Override protected String doInBackground(String... params) { String urlString = AppConstan

strcpy-新人求好心好心大神帮帮忙 Visual C遇到char溢出问题

问题描述 新人求好心好心大神帮帮忙 Visual C遇到char溢出问题 我遇到一个好纠结的问题,一直不知道原因在哪,蛋都碎了: 主工程: char Msg[1024]; check(Msg);//dll Addstring(Msg): DLL: int check(*msg) { cstring buff=""; strcpy(msg,""): buff.format("xxxxxx%d,%d",int1,int2); strcat(msg,&

java求哪位大神帮看看,分割可以,粘合不行!

问题描述 java求哪位大神帮看看,分割可以,粘合不行! import java.util.*;import java.io.*;class SplitDemo { public static void main(String[] args) throws IOException { //File file=new File(""D:我想念你.mp3""); File dir=new File(""D:splitfiles""

java 排列组合-求大神帮我看看这段代码,打印完“12345”结束for循环后为什么还能继续运行?新手没金币,抱歉!

问题描述 求大神帮我看看这段代码,打印完"12345"结束for循环后为什么还能继续运行?新手没金币,抱歉! public class Test { public static void main(String[] args) { prints(0 0 0 0 0);}public static void prints(int k1int k2int k3int k4int k5){ if(k5!=0){ System.out.println(k1*10000+k2*1000+k3*1

#c++#求大神帮我改正下,关于多态和虚函数的

问题描述 #c++#求大神帮我改正下,关于多态和虚函数的 #include using namespace std; class X1 { protected: int x; public: X1(int xx){x=xx;} virtual void output()=0; }; class Y1:private X1 { int y; public: Y1(int xx=0,int yy=0):X1(xx) {y=yy;} void output() { cout<<"x=&qu

jsp-JSP传给action的是字符串类型,转换数据类型,让getlist()接收,求大神帮帮忙写下代码

问题描述 JSP传给action的是字符串类型,转换数据类型,让getlist()接收,求大神帮帮忙写下代码 JSP传给action的是字符串类型,怎么转换数据类型,然后让getlist()接收,求各位大神帮帮忙写下代码~ 如果能够给解释一下,那就千恩万谢啦 解决方案 可以通过强制转换在前面加上int 解决方案二: gongWenLeiBieList = dao.getList(Integer.parseInt(mingCheng));

ava基础 代码错误-Java新手,求大神帮小弟看看这段代码哪里错了,多谢!!!

问题描述 Java新手,求大神帮小弟看看这段代码哪里错了,多谢!!! class Student { //姓名 private String name; //年龄 private int age; //构造方法 public Student(){ } public Student(String name, int age){ this.name = name; this.age = age; } public String getName(){ return name; } public voi

新手求解答一下-新手求解答各位大神帮帮忙

问题描述 新手求解答各位大神帮帮忙 是这样的,我昨天刚刚安装了一个ocrale?11g?,但是我怎么登陆都登不上去,用sys?as?sysdba显示的是权限不足,用scott显示账户被锁,用internal显示不是有效的dba连接,我用的是win10,新手小白我真的不知道怎么办了QAQ 解决方案 记得原来登录是用的scott,密码是tiger,你这种问题没遇到过...抱歉