当前位置: 代码迷 >> C语言 >> 求助一道算法题目
  详细解决方案

求助一道算法题目

热度:110   发布时间:2008-01-18 13:28:24.0
fflush(stdin);
没什么用,把缓冲的数据送到内存
----------------解决方案--------------------------------------------------------
老大,你也不小了好不
----------------解决方案--------------------------------------------------------
楼上的怎么了??????呵呵,学习没有止境啊,程序我写的要负责解说到位啊....
----------------解决方案--------------------------------------------------------
我也写了一个。

int defact(int x)
{
    int a = 2;
   
    if(x < 0)
    {
        x *= -1;
        printf("-1");
    }
    else if(x <= 1)
        printf("1");
   
    while(x > 1)
    {
        if(x % a == 0)
        {
            printf(" * %d", a);
            x /= a;
            a = 2;
        }
        else
            ++a;
    }
    putchar('\n');
}

[[italic] 本帖最后由 cosdos 于 2008-1-19 00:45 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
用欧几里德算法,辗转相除
----------------解决方案--------------------------------------------------------
我想了想可以把时间复杂度降下来;
j从2开始小于key的平方根且小于key除以已找到的因子之后的数,
找 J 时从2开始,以后的偶数都跳过,
当找到一个因子时不必再从2开始重新找,
将这个因子继续判断是否还是他的质因子如果不是了就继续加,
----------------解决方案--------------------------------------------------------
main()
{
int m,j=2;

scanf("%d",&m);

printf("\n%d=",m);
while(m!=1) {
  if(m%j == 0) {printf("%d*",j);m/=j;}

  else {j++;  }
  if(j>m)break;
}
getch();
}
----------------解决方案--------------------------------------------------------
skyergg?
sky gg?
sky很强的
----------------解决方案--------------------------------------------------------
  相关解决方案