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个回答

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

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐