| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 674 人关注过本帖
标题:运气好还能碰上101128442溢出后等于2147483280
取消只看楼主 加入收藏
mathspanda
Rank: 2
等 级:论坛游民
帖 子:15
专家分:15
注 册:2012-5-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
运气好还能碰上101128442溢出后等于2147483280
运气好还能碰上101128442溢出后等于2147483280
有这种可能么?
2012-08-08 14:07
mathspanda
Rank: 2
等 级:论坛游民
帖 子:15
专家分:15
注 册:2012-5-12
收藏
得分:0 
回复 2楼 peach5460
能具体的解释一下过程么?
谢谢了
2012-08-08 16:40
mathspanda
Rank: 2
等 级:论坛游民
帖 子:15
专家分:15
注 册:2012-5-12
收藏
得分:0 
回复 4楼 zklhp
额 我说的不是这个 这个我知道啊
我说的是101128442溢出后等于2147483280的过程
谢了
2012-08-08 16:59
mathspanda
Rank: 2
等 级:论坛游民
帖 子:15
专家分:15
注 册:2012-5-12
收藏
得分:0 
回复 6楼 zklhp
好吧 我承认我问题没有说清楚 sorry了
程序代码:
  #include<stdio.h>
  /* do NOT use this if x is very large or small */
  int is_prime(int x)
  {
    int i;
    for(i = 2; i*i <= x; i++)
      if(x % i == 0)   return 0;
    return 1;
  }
  
  int main()
  {
    int i, m;
    scanf("%d", &m);
    for(i = m-2; i >= 3; i--)
      if(is_prime(i) && is_prime(i+2)) {
        printf("%d %d\n", i, i+2);
        break;
      }
    return 0;
  }


题目的注释中有这样一句:当循环到i=46340时i*i<n;但i=46341时i*i=2147488281,超过了int的最大值,溢出变成负数,仍然满足i*i<n!n不是太大的话,运气好还能碰上101128442溢出后等于2147483280,终止循环;但如果n=2147483647的话,循环将一直进行下去。(来自刘汝佳编著的《算法竞赛入门经典》)
我就是对“运气好还能碰上101128442溢出后等于2147483280”不太理解!
2012-08-08 17:14
快速回复:运气好还能碰上101128442溢出后等于2147483280
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030856 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved