这是Euler项目的第3个问题。什么是600851475143最大的主要因素。我已经完成了程序,但这个数字是一个12位数,我不得不采用数据类型。当我尝试执行小编号的程序,例如13195时,它工作正常,但是对于所需的数字,它没有!我尝试在网上各种编译器中运行它,也在我在PC上使用的Cygwin上运行它。但是在三次输出之后,这些计划就会停止前进。
HELP !!
#include<stdio.h>
int main()
{
long long num = 600851475143;
int i=1,j,k, big=0;
// printf("\nEnter a number:");
//scanf("%d",&num);
while(i<=num)
{
k=0;
if(num%i==0)
{
j = 1;
while( j <= i)
{
if( i % j == 0)
k++;
j++;
}
if(k==2)
{
printf("\n%d is a prime factor",i);
if( i > big)
big = i;
}
}
i++;
}
printf("\nBiggest prime factor is %d", big);
return 0;
}
答案 0 :(得分:0)
#include<stdio.h>
int main(){
long long num = 600851475143LL;
long long i=1;//It must be the same type for num when was the prime.
for(i=2;i*i<=num;++i){
while(num % i ==0){
num /= i;
}
}
printf("\nBiggest prime factor is %lld", num == 1 ? i - 1 : num);
return 0;
}