42708402 发表于 2021-10-24 14:38:42

oj报错超时,求大佬帮忙改改

#include <stdio.h>
int main()
{
        long int t;
        int m, n;
        while (scanf("%d %d",&m,&n) != EOF)
        {
                for (t = m; t++;)
                {
                        if (t%m==0&&t%n==0)
                        {
                                printf("%d", t);
                                break;
                        }
                }
        }
        return 0;
}
实质上是输入m和n,求最小公倍数
谢谢大佬,膜拜

jackz007 发表于 2021-10-24 15:23:16

#include <stdio.h>

int main(void)
{
      int d , i , j , m , n , t                              ;
      char s                                          ;
      for(;;) {
                gets(s)                                        ;
                if(s) {
                        sscanf(s , "%d%d" , & m , & n) ;
                        for(d = 1 , i = m , j = n , t = 2 ; t < i + 1 && t < j + 1 ;) {
                              if(! (i % t) && ! (j % t)) {
                                        i /= t               ;
                                        j /= t               ;
                                        d *= t               ; // d 是 m、n 的最大公约数
                              } else {
                                        t ++                   ;
                              }
                        }
                        if(d > 1) printf("%d\n\n" , m * n / d) ;
                        else printf("None\n")                  ;
                } else {
                        break                                  ;
                }
      }
}
      编译、运行实况:
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
99 88
792

6 24
24

96 112
672

D:\00.Excise\C>

42708402 发表于 2021-10-24 16:28:08

你这个比我的还复杂
页: [1]
查看完整版本: oj报错超时,求大佬帮忙改改