注册 登录
编程论坛 C++教室

大侠帮忙看看,这2句话理解的对吗.....

a632034079 发布于 2009-11-09 16:31, 496 次点击
double sqrtm=sqrt(m*1.0);    是不是将M从整型装换到双精度浮点类型啊???
    for(int i=2;i<=sqrtm;i++) 这句话里的i自增,前增后增都可以,这是为什么啊?                           
        
那位大侠解释下这2句话的意思啊...

#include <iostream.h>            
#include <cmath>
int main()
{
    cout<<"请输入一个数字:"<<endl;
    int m;
    cin>>m;
    double sqrtm=sqrt(m*1.0);
    for(int i=2;i<=sqrtm;i++)                                 
        if(m%i==0)
        {
            cout<<m<<"不是一个素数"<<endl;
            cin.get();
            return 0;
        }
        cout<<m<<"是一个素数"<<endl;  
        cin.get();
        return 0;
}
6 回复
#2
a6320340792009-11-09 16:49
没人在,吗
#3
ml2325282009-11-09 17:10

double sqrtm;
sqrtm=sqrt(m*1.0);


i++ 在for循序里最后执行

[ 本帖最后由 ml232528 于 2009-11-9 17:13 编辑 ]
#4
qlc002009-11-09 17:16
double sqrtm=sqrt(m*1.0);这句话也可以不用把sqrtm设置为双精度类型的。这样到是增加了存储空间。m本来是int型的,开方后应该比m小。这里乘以1.0可以不要。
前增和后增都需要循环到<=sqrtm,所以就没有什么区别。结果是一样的。
简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。
而 a = ++i,相当于 i=i+1; a = i;
而 a = i++,相当于 a = i; i=i+1;
#5
a6320340792009-11-10 08:55
能更详细点吗
#6
a6320340792009-11-10 14:15
...........
#7
qlc002009-11-10 15:32
回复 6楼 a632034079
什么样的才叫详细呢?你可以通过调试,自己来查看每一步i的值是如何变化的。
1