desunandmoon
夕夕日月863
采纳率0%
2021-03-03 12:48

C++基础,输入一个数判断是否为素数,请问哪里出错了?

#include "iostream"
#include "cmath"
using namespace std;
int fun(int(n));
int main(){
    int x;
    cout<<"请输入一个整数"<<endl;
    cin>>x;
    if(fun(x))
       cout<<"不是素数"<<endl;
    else
       cout<<"是素数"<<endl;
    return 0;    

int fun(int(n)) 
{   
    int k,yes;
    yes=sqrt(n);
    for(k=2;k<=yes;k++)
        if(n%k==0)
           yes=0;
        if(k>yes)
           yes=1;
    return yes;
    
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • hfcaoguilin infsml 1月前

    你代码有两个问题,见下图

    问题1:fun表达的意思是是否为素数,是否反了

    问题2, 需要两个变量,一个表达循环次数,一个表达是否为素数, 你将这两个变量合为一个变量yes了

    点赞 评论 复制链接分享
  • qq_43414873 小白小白你好菜 1月前

    #include "iostream"
    #include "cmath"
    using namespace std;
    int fun(int(n));
    int main(){
        int x;
        cout<<"请输入一个整数"<<endl;
        cin>>x;
        if(!fun(x))
           cout<<"不是素数"<<endl;
        else
           cout<<"是素数"<<endl;
        return 0;    

    int fun(int(n)) 
    {   
        int k,yes = 0;
        yes=sqrt(n);
        for(k=2;k<=yes;k++)
            if(n%k==0)
               break;
        if(k>yes)
            return 1;
        return 0;
    }

    点赞 评论 复制链接分享
  • hfcaoguilin infsml 1月前

    #include "iostream"
    #include "cmath"
    using namespace std;
    int is_prime(int n);
    int main(){
        int x=13; 
        string msg[]={"不是素数","是素数"};
        cout<<x<<msg[is_prime(x)]<<endl;
        return 0;    
    } 
    int is_prime(int n)
    {   
        int k,sqr;
        int yes=1;//先假设是素数,在下面循环中进行否定
        sqr=sqrt(n)+1;
        for(k=2;k<=sqr;k++){
            
            if(n%k==0){//进行否定
               yes=0;
            }
        }
        return yes;
        
    }
    点赞 评论 复制链接分享
  • weixin_42910064 泡视界 1月前

    为啥要求根???

    yes=sqrt(n);
        for(k=2;k<=yes;k++)

    点赞 1 评论 复制链接分享