| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1406 人关注过本帖
标题:我的素数总是算不出来啊 我感觉没毛病啊?c++
只看楼主 加入收藏
一の小菜鸟
Rank: 1
等 级:新手上路
帖 子:20
专家分:1
注 册:2017-1-12
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:12 
我的素数总是算不出来啊 我感觉没毛病啊?c++
#include <iostream>
#include <cmath>
using namespace std;
int sushu(int a)
{
    if(a<2)
    {
        cout<<"不是素数的"<<endl;
    }
    if (a==3)
    {
        cout<<"是一个素数! "<<endl;
    }
    else
    {
        for (int i=2;i<sqrt(a);)
        {
            if (a%i==0)
            {
                cout<<"是素数的"<<endl;break;
            }
            else i++;
        }
    }
    return 0;
}
int main ()
{
    int a;
    cin>>a;
    sushu(a);
    return 0;
}
搜索更多相关主题的帖子: include return 
2017-01-12 17:58
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:4 
毛病其中之一~i<sqrt(a)~要改成i<=sqrt(a)~

有空我也要学C++了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-12 18:35
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:633
专家分:3045
注 册:2011-4-22
收藏
得分:4 
逻辑搞反了,伙计。学习编程要学会调试,我给你调试了以下,发现了问题。代码做了部分修改。

////////////////////////////////////
#include <iostream>
#include <cmath>
using namespace std;
int sushu(int a)
{
    if(a == 1)
    {
        //cout<<"不是素数的"<<endl;
        return 0;
    }
    if (a<=3)
    {
        //cout<<"是一个素数! "<<endl;
        return 1;
    }
    else
    {
        for (int i=2;i<=sqrt(a);)
        {
            if (a%i==0)
            {
                //cout<<"不是素数的"<<endl;
                //break;
                return 0;
            }
            else i++;
        }
    }
    return 1;
}
int main ()
{
    int a;
    cin>>a;
    if(sushu(a) == 1)
    {
    cout<<"是一个素数! "<<endl;   
    }
    else
    {
    cout<<"不是素数的"<<endl;   
    }
    return 0;
}
2017-01-12 19:27
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:4 
int sushu(int a)
{
    if(a<2)
    {
        cout<<"不是素数的"<<endl;
    }
    if (a==3)
    {
        cout<<"是一个素数! "<<endl;
    }
    else
    {
        for (int i=2;i<=sqrt(a); i++)
        {
            if (a%i==0)
            {
                cout<<"不是素数的"<<endl;
                return 0;
            }
        }
        cout<<"是一个素数! "<<endl;
    }
    return 0;
}
2017-01-12 19:28
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
有种感觉~写 if (a==2)和 if (a==3)给人很水的样子~

感觉而已,我是来灌水的~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-12 19:32
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:633
专家分:3045
注 册:2011-4-22
收藏
得分:0 
用switch ...case,代码更清洁
2017-01-12 19:36
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
对哦,if(a<2)这样写可以,但既然你知道加返回值返回了,下面没有else 但if (a==3)时下面却用了个else,显然是没必要的~
这样加了else多了个括号,使程序框架没那么清晰~

还有for(i=2;i<=sqrt(a);i++)这样写应该已经包含a==3的情况下了吧~


[此贴子已经被作者于2017-1-12 19:49编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-12 19:48
一の小菜鸟
Rank: 1
等 级:新手上路
帖 子:20
专家分:1
注 册:2017-1-12
收藏
得分:0 
回复 3楼 zbjzbj
哈哈,十分感谢你的代码,我知道错误在哪里了,不过在你的代码里面0也算是素数了偶,话说0到底算不算是呢,我记得是2是最小的素数,哎呀懵逼了,总之灰常感谢你的代码qaq
2017-01-13 18:10
一の小菜鸟
Rank: 1
等 级:新手上路
帖 子:20
专家分:1
注 册:2017-1-12
收藏
得分:0 
回复 2楼 九转星河
我后老也是看了半天,是呢,这是个挺致命的错误的,谢谢你的指导,大神哈哈,话说你是学的c语言?
2017-01-13 18:14
一の小菜鸟
Rank: 1
等 级:新手上路
帖 子:20
专家分:1
注 册:2017-1-12
收藏
得分:0 
回复 6楼 zbjzbj
我用不懂,虽然确实挺简洁的,确实我挺喜欢的,一时半会不敢用,对了switch里的case后面是不是就全是接1,2,3,或者是a,b,c,一脸懵逼……
2017-01-13 18:17
快速回复:我的素数总是算不出来啊 我感觉没毛病啊?c++
数据加载中...
 
   



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

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