qflyalltime
小羊也疯狂
2017-10-06 13:30
采纳率: 88.4%
浏览 2.3k
已采纳

c语言如果一个整数超出unsinged long的表示范围该怎么办

图片说明
输入一个数《1000 如果能被11....整除则显示
输入31 结果就是15个1
输入121 num和s溢出导致无限循环
1,怎么才能表示一个超过unsinged long界限的整数呢?
2.我看百度上有说可以用long double 的。如果用了,这里的整除判断 while(num%x!=0) 该怎么改写?

 #include<stdio.h>
int main(){
  int x;
  unsigned long s;
  int n = 1;
  unsigned long num = 1;
  scanf("%d",&x);
  while(num%x!=0) {
    printf("%lu can not divide %d\n", num,x);
    unsigned long temp;
    temp = num;
    num = 10*num + 1;
    n++; 
  }
  s = num/x;
  printf("%lu divide %d is %lu\n",num,x,s);

  return 0;
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • caozhy
    已采纳

    大数计算可以用字符串模拟,想要多大就多大

    http://www.cnblogs.com/hugeNumber/articles/5376906.html

    点赞 评论
  • Mrlonely3652
    Mrlonely3652 2017-10-07 03:47

    用字符数组进行输出,这样也方便输出,同时也摆脱了限制

    点赞 评论
  • qq_38373149
    小浪zoom 2017-10-08 06:39

    大数计算可以用字符串模拟,想要多大就多大

    点赞 评论

相关推荐