| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 724 人关注过本帖
标题:小小程序,,大大问题!!!
只看楼主 加入收藏
人士online
Rank: 1
等 级:新手上路
帖 子:22
专家分:4
注 册:2010-8-21
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:5 
小小程序,,大大问题!!!
#include <stdafx.h>
#include "iostream"
#include <cmath>
#include <stdlib.h>
using namespace std;
void main(){
    cout<<"please input a number.\n";
    int m;
    double n;
    cin>>m;
    n=sqrt(m*1.0);
    for(int i=1;i<=n;++i)
        if(m%i==0){
            cout<<m<<" isn't a prime.\n ";
             }
        else cout<<m<<"  is a prime.\n";
        system("pause");
        }
搞不懂。。会出现这样的结果
please input a number.
4
4  isn't a prime.
 4 isn't a prime.

输入5时有不一样了

please input a number.
5
5 isn't a prime.
 5 is a prime.
搜索更多相关主题的帖子: void include please system 
2010-09-14 22:16
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:3 
这么说吧
你运行
 if(m%i==0){
            cout<<m<<" isn't a prime.\n ";
             }
        else cout<<m<<"  is a prime.\n";
有问题
因为i在变化,所以会运行根号n次
当输入4时候
i=1:输出isn't一次
i=2:输出isn't第2次
当输入5时候
i=1:输出isn't一次
i=2:因为!=0,所以输出is了
你可以吧 for(int i=1;i<=n;++i)改成 for(int i=2;i<=n;++i)




2010-09-14 22:35
encounter
Rank: 5Rank: 5
来 自:扬州
等 级:职业侠客
威 望:2
帖 子:150
专家分:359
注 册:2010-7-24
收藏
得分:3 
for(int i=1;i<=n;++i)
        if(m%i==0){
            cout<<m<<" isn't a prime.\n ";
             }
        else cout<<m<<"  is a prime.\n";
        system("pause");
显然的逻辑错误
C++有break吗 没学过

ping   nbtstat   netstat   tracert    nat   at    ftp   telnet..................
2010-09-14 22:37
encounter
Rank: 5Rank: 5
来 自:扬州
等 级:职业侠客
威 望:2
帖 子:150
专家分:359
注 册:2010-7-24
收藏
得分:0 
回复 2楼 carmeloyin
你那是具体问题具体分析
n变了,就错了

ping   nbtstat   netstat   tracert    nat   at    ftp   telnet..................
2010-09-14 22:42
木乃伊怀孕了
Rank: 1
等 级:新手上路
帖 子:1
专家分:3
注 册:2010-9-15
收藏
得分:3 
可以改为  if(m%i==0)break;
if(i>m)cout<<m<<"  is a prime.\n";
else
cout<<m<<" isn't a prime.\n ";   
你试试
2010-09-15 00:29
人士online
Rank: 1
等 级:新手上路
帖 子:22
专家分:4
注 册:2010-8-21
收藏
得分:0 
回复 3楼 encounter
for(int i=1;i<=n;++i)
        
        if(m%i==0)
            
    {    cout<<m<<" isn't a prime.\n ";break;
            
        }
        else     
    cout<<m<<"  is a prime.\n";
那我把后天改成这样,,为什么不会多次输出is
2010-09-16 00:07
快速回复:小小程序,,大大问题!!!
数据加载中...
 
   



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

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