| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 496 人关注过本帖
标题:关于一段代码的疑问
只看楼主 加入收藏
kybo04
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-11-16
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:2 
关于一段代码的疑问
#include "stdafx.h"
#include<math.h>

#include <iostream>        
using namespace std;   


int main()
{
    int nStart=0,nEnd=0;        //整数区间的最小值和最大值
    int nCnt1=0,nCnt2=0;    //循环计数器
    int nSqrt;                //存储平方根值
    int nNum=0;            //计算出的素数个数
    cout<<"输入整数区间的最小值:";
    cin>>nStart;
    cout<<"输入整数区间的最大值:";
    cin>>nEnd;
    for(nCnt1=nStart;nCnt1<=nEnd;nCnt1++){    //利用循环分别验证每一个数是否为素数
        nSqrt=sqrt(nCnt1);                    //sqrt()为求平方根函数,其原型在math.h中
        //以下循环是判断nCnt1是否能被2到nSqrt整除
        for(nCnt2=2;nCnt2<=nSqrt;nCnt2++)
        if(nCnt1%nCnt2==0)    break;    //如果能整除,说明为非素数,循环退出
         
        if(nCnt2>=nSqrt+1){
            cout<<nCnt1<<" ";
            nNum=nNum+1;
        };
        
            if(nNum%10==0) cout<<endl;    //每输出10个素数,则进行换行
        };
   
    cout<<"共有"<<nNum<<"个素数。"<<endl;
    return 0;
}

这段代码是求给定一个任意区间内所有的素数。
代码是没有问题,VC上也能运行,但是小弟有一个问题不明白。
假如nCnt1=2,则nSqrt=√2.
然后进入第二个for语句,nCnt2<=nSqrt不成立,退出。
到下一个if语句,if(nCnt2>=nSqrt+1)明显也是不成立的,那计算机最后是怎么会显示2的呢?但是计算机确实显示了2.

还请各位大哥大姐指点。。。

搜索更多相关主题的帖子: 代码 疑问 
2009-11-16 22:51
qlc00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:157
专家分:540
注 册:2007-11-26
收藏
得分:10 
因为nSqrt是整形,在这里就是1.if语句里正好相等,所以执行

Anything is possible!
2009-11-16 23:23
kybo04
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-11-16
收藏
得分:0 
哇,一语道破,太感谢了,小弟刚学C++,不好意识了。
分给你了·再次感谢·

[ 本帖最后由 kybo04 于 2009-11-16 23:31 编辑 ]
2009-11-16 23:29
快速回复:关于一段代码的疑问
数据加载中...
 
   



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

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