kazuo 发表于 2021-10-24 20:26:26

大佬帮忙看一下

C语言教程的阶段考核
下边的是我第三题的答案,当求104的最大质数因子时能求出来,求600851475143的,半天没响应。
#include<stdio.h>
#include<math.h>

#define n 600851475143
int main()
{
    long long j,i,k;
    _Bool b=0;

    for (j=1 ; j < n; j++)
    {
      if(n % j == 0)
      {
            for(i=2 ; i<pow(j,0.5) ; i++)
            {
                if(j%i==0)
                {
                  b=1;
                  break;
                }
                if(b)
                {
                  k=j;
                }
            }
      }
    }
    printf("%lld",k);   
   
    return 0;
}

kazuo 发表于 2021-10-24 20:27:24

有没有什么解决办法

Gacy 发表于 2021-10-24 21:29:38

不懂 下一个{:10_266:}

泌阳 发表于 2021-10-24 22:28:35

本帖最后由 泌阳 于 2021-10-24 22:30 编辑

要等久点,答案是550145857,可以执行的,我等了半分钟出来的

傻眼貓咪 发表于 2021-10-25 10:25:35

泌阳 发表于 2021-10-24 22:28
要等久点,答案是550145857,可以执行的,我等了半分钟出来的

你的答案好象不正确
题目要求最大质数因子

550145857 = 32361521*17
550145857 = 11705231*47
550145857 = 688543*799

明显 550145857 不是质数

泌阳 发表于 2021-10-25 22:56:10

傻眼貓咪 发表于 2021-10-25 10:25
你的答案好象不正确
题目要求最大质数因子



我执行出来就是这个

傻眼貓咪 发表于 2021-10-26 10:11:14

泌阳 发表于 2021-10-25 22:56
我执行出来就是这个

抱歉兄弟,你可能对于质数有所误会还是说你不明白?
质数就是除了 1 和自己本身可以被除整以外,没有其他数可以被除整,这是基本啊。
你说:"执行出来就是这个"?你是指因数是这个,还是质数是这个?
题目要求 3 个条件:
最大:必须是最大
质数:必须是质数/素数
因数:必须是因数

泌阳 发表于 2021-10-28 14:45:42

傻眼貓咪 发表于 2021-10-26 10:11
抱歉兄弟,你可能对于质数有所误会还是说你不明白?
质数就是除了 1 和自己本身可以被除整以外,没有其 ...

他说的是不能执行,但是我执行出来就是这样的

傻眼貓咪 发表于 2021-10-28 14:57:32

本帖最后由 傻眼貓咪 于 2021-10-28 14:59 编辑

泌阳 发表于 2021-10-28 14:45
他说的是不能执行,但是我执行出来就是这样的

明白了,楼主代码有误{:10_277:}
楼主代码执行速度超级慢主要是因为找因数所致,判断质数没有问题,查找因数方面代码需加强。
页: [1]
查看完整版本: 大佬帮忙看一下