这条代码不太懂 求解
#include<stdio.h>
int main()
{long m,n,i=1,j,s;
scanf("%ld,%ld",&m,&n); 如果m是30 n是40
for(;i<=m&&i<=n;i++)
{if(m%i==0&&n%i==0) s=i;}
if(m>=n) j=m;
else j=n;
for(;!(j%m==0&&j%n==0);j++);
printf("s=%ld,j=%ld\n",s,j);
getch();
} 这个是整公式求最大公约最小公陪数
for(;i<=m&&i<=n;i++)
{if(m%i==0&&n%i==0) s=i;}
这段不解 30%1为真40%1也为真 那s就应该也是1啊
但是为何结果是10公倍为120
哪段是求最大公约的?
[解决办法]
for(;i<=m&&i<=n;i++)
{if(m%i==0&&n%i==0) s=i;}
当i=1的时候,虽然成立但是他没跳出啊,s应该等于跳出前最后一次的赋值
[解决办法]
for(;i<=m&&i<=n;i++)
{if(m%i==0&&n%i==0) s=i;}
这段不解 30%1为真40%1也为真 那s就应该也是1啊
s赋值为1的时候,循环没有结束,因为i<=m&&i<=n这个条件还没成立。
所以一直循环到i=30的时候结束循环。
这个时候s=10