silver-crow 发表于 2021-12-23 02:47:39

为什么我这个代码没法运行

题目:编写一个程序,求解 600851475143 的最大质数因子是多少?

代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    long long target, mid = 0, test,re;
    //target用来表示最大质数因子,mid用来判断target是否为质数,
    //test用来用来测试target是否为质数,re用来表示600851475141与target的余数
    for(target = 600851475141;target > 0;target = target - 2)
    {
      //re为0则target是600851475143的因数,反之则不是
      re = 600851475143 % target;
      //mid为0则target是质数,反之则不是
      for(test = 2;test < target;test++)
      {
            if(target % test == 0)
            {
                mid = 1;
                break;
            }
      }
      //因为target是600851475143倒着找因数的,所以第一个满足余数为0且为质数的target就是最大质数因子
      if(re == 0 && mid == 0)
      {
            printf("600851475143 的最大质数因子是%11d", target);
            break;
      }
    }
    return 0;
}

jhq999 发表于 2021-12-23 05:43:56

for(target = 600851475141;target > 0;target = target - 2)//数太大,每次减2,用时太长

傻眼貓咪 发表于 2021-12-23 08:14:12

这么大的数字,不能只用基本方法找素数(取模),找到天荒地老...
就连用平方根找,都不知道多久才能找到...
页: [1]
查看完整版本: 为什么我这个代码没法运行