程序不打印我的long long变量

时间:2014-01-08 12:07:31

标签: c variables printf format-specifiers

我试图使用C,在项目Euler上解决问题3。 我遇到问题中的大整数问题 - int和long给我一个“溢出”警告,我的程序没有将结果打印到控制台。所以我切换到'long long'类型,警告消失但控制台仍然没有打印答案,这让我觉得我的代码中有错误。

#include <stdio.h>

int main()
{
long long largest=0;
long long div=2;
long long i = 600851475143;

while(div<i)
{
    if(i%div == 0)
    {
    largest=div;
    }
    div++;
}
printf("%I64d\n", largest);
return 0;
}

我在Windows 7上使用Mingw作为编译器。

5 个答案:

答案 0 :(得分:1)

使用%lld打印long long int类型数据。

printf("%lld\n", largest)  

或将格式说明符中的I更改为l

答案 1 :(得分:1)

代码没问题。只是运行时间过长。以下代码打印出步骤。

while(div<i)
{
  printf("%lld\n",div);
  if(i%div == 0)
  {
  largest=div;
  }
  div+=1;
}

根据算法点,我建议您初始化div = 600851475143/2并向后计数

答案 2 :(得分:0)

试试%ll,它会正常工作

printf("%ll\n", largest);

答案 3 :(得分:0)

请使用%lld作为格式说明符。有关更多信息,请参阅link

答案 4 :(得分:0)

#include <stdio.h>

int main()
{
long long largest=0;
long long div=2;
long long i = 600851475143;

while(div<i)
{
    if(i%div == 0)
    {
         largest=div;
         break;//out of loop
         printf("%lld\n", largest);//or add this ,I don't think so
    }
    div++;
}
printf("%lld\n", largest);
return 0;
}
也许这就是你想要的,也许不是......