angus 发表于 2018-3-4 02:46:30

gcc 编译通过,运行时提示floating point exception

求大神帮忙分析,源代码如下
#include <stdio.h>
#include <stdlib.h>
#include <curses.h>
int main()
{
    long i, max = 0, a = 600851475143;
    for (i = 0;i < a; i++)
    {
      if(a % i == 0 && i % 2 != 0)
      {
            max = i;
            a = a / i;
            printf("%ld\t",max);
      }
    }
    printf("最大质因数是%ld\n",max);

    getchar();

    return (0);
}

angus 发表于 2018-3-4 02:47:05

这是带你学C带你飞的考试题

Dr丶温 发表于 2018-3-4 07:38:08

类型用的不对吧,改成 long long 试试看。。。

alltolove 发表于 2018-3-4 09:38:01

像这种的大数据c语言不是太好弄

angus 发表于 2018-3-4 14:46:50

Dr丶温 发表于 2018-3-4 07:38
类型用的不对吧,改成 long long 试试看。。。

我实在Ubuntu64位下编译的,long是8个字节,可以放这么大的数据。

alltolove 发表于 2018-3-4 15:03:05

angus 发表于 2018-3-4 14:46
我实在Ubuntu64位下编译的,long是8个字节,可以放这么大的数据。

c语言的规定是死的,1字节就是8位,跟机器多少位没关系

angus 发表于 2018-3-4 15:23:27

alltolove 发表于 2018-3-4 15:03
c语言的规定是死的,1字节就是8位,跟机器多少位没关系

C:\Users\M\Desktop\微信图片_20180304152151.png

angus 发表于 2018-3-4 15:25:11

alltolove 发表于 2018-3-4 15:03
c语言的规定是死的,1字节就是8位,跟机器多少位没关系

您看一下,这个是实测结果,long   8byte

angus 发表于 2018-3-4 19:16:31

问题已解决,for循环初始值应该设置为1,如果为0,第一句a % i就不成立,谢谢大家
页: [1]
查看完整版本: gcc 编译通过,运行时提示floating point exception