for( k=m*t; t%k!=0||m%k!=0; k--);请问这一条c语言代表什么?急!!!跪求答案,感激不尽!

如题

1、k=m*t;
2、循环条件 t%k!=0||m%k!=0 ,当t或m中至少有一个不被k整除时结果为1,否则当两个同时能被k整除时结果为0;
3、因此从m*t开始每次k值减1,依次判断m和t是否能同时被更新后的k整除,如果是循环就结束;
4、综合上述分析,该循环用于求m和t的最大公约数。
举例:m=24,t=36,所以k=864,
首先m和t显然都不能被864整除,接下来k--,使k变为864
再判断m和t是否都能被863整除,既然不可以再k--,k变为862,依次类推,直到k递减到12时,t和m都可以被12整除,循环结束,此时的k的值是12,也就是24和32的最大公约数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-21
一个循环,K从m*t开始,每次递减1,直到t%k=0且m%k=0时终止循环。
这是求t和k的最大公约数吧。
K从m*t开始,逐一去和t,m取模,当取模后的结果都=0时,说明k是这两个数的公约数,而k又是从m*t开始递减的,所以找到的第一个符合条件的数即为最大公约数
第2个回答  2014-02-21
for( k=m*t; t%k!=0||m%k!=0; k--);
等价于
while (1) {
    if ((t % k == 0) && (m % k==0)) {
        break;
    }
    k--;
}

求最m,t的大公约数k(注:这样写前提是m>0并且t>0,而且效率也比较低)

相似回答