永发信息网

C++求素数

答案:4  悬赏:70  手机版
解决时间 2021-01-22 12:34
  • 提问者网友:低吟詩仙的傷
  • 2021-01-22 08:59
#include <iostream>
#include <cmath>
using namespace std;
bool prime(int);
int main ()
{cout<<"please input an integral:";
int n;
cin>>n;
if (prime)
cout<<n<<" is a prime."<<endl;
else
cout<<n<<" is not a prime."<<endl;
return 0;
}
bool prime (int m )
{int i,k;
bool prime;
k=int(sqrt(m));
for(i=2;i<=k;i++)
if(m%i==0) prime=false;
else prime=true;
return 0;
}
最佳答案
  • 五星知识达人网友:老鼠爱大米
  • 2021-01-22 09:40
#include <iostream>
#include <cmath>
using namespace std;
bool prime(int);
int main ()
{cout<<"please input an integral:"<<endl;
int n;
cin>>n;
if (prime(n)) //注意是prime(n),因为函数是有参数的
cout<<n<<" is a prime."<<endl;
else
cout<<n<<" is not a prime."<<endl;
return 0;
}
bool prime (int m )
{int i,k;
bool prime;
k=int(sqrt(m));
for(i=2;i<=k;i++)
{if(m%i==0) prime=false;
break;} //若能整除,说明不是素数,跳出循环
if(i==(k+1)) prime=true; //若正常结束循环,则说明m是素数,i=k+1
return prime; //应该是return prime
}
全部回答
  • 1楼网友:鸠书
  • 2021-01-22 11:50
#include <iostream> #include <cmath> using namespace std; bool prime(int); int main () { cout<<"please input an integral:"; int n;cin>>n; if (prime(n)) cout<<n<<" is a prime."<<endl; elsecout<<n<<" is not a prime."<<endl; return 0; } bool prime (int m ) { int i,k; k=int(sqrt(m)); for(i=2;i<=k;i++) if(m%i==0) return false; return true; } 这样就对了,把不必要的中间变量省去,更加紧凑了。
  • 2楼网友:思契十里
  • 2021-01-22 10:40
这里的 if(j>=sqrt(i)){ cout<<i<<" "; cnt++; 改成if(j>sqrt(i)) 因为如果j=sqrt(i)时而且i=(sqrt(i))*(sqrt(i)) 时就不是素数了。因为它可以被sqrt(i)除尽。 else continue; 这两句也可以去掉,因为如果不满足if()的条件,程序会自己继续进行。 这里的if(cnt==10) 也可以改为if(cnt%10==0) 效果一样,更简便。 这里的括号也错了。 #include"iostream.h" #include"math.h" void main() { int 窢迹促克讵久存勋担魔cnt=0,i,j; for(i=13;i<=100;i++) for(j=2;j<=sqrt(i);j++){ 这个 移到最左边。 if(i%j==0) break; else continue; } 这个要放在最后。 if(j>=sqrt(i)){ cout<<i<<" "; cnt++; } if(cnt==10){ cout<<endl; cnt=0; } }
  • 3楼网友:西风乍起
  • 2021-01-22 10:32
是帮你改还是我重新写一个 帮你写的 #include<iostream> #include<stdlib.h> using namespace std; bool prime(int n) {     int i;     if(n<2)         return 0;     for(i=2;i<n;i++)         if(n%i==0)             break;     if(i==n)         return 1;     else         return 0; } int main() {     int n;     cout<<"请输入一个不为0的自然数:";     cin>>n;     if(prime(n))         cout<<n<<"是素数!"<<endl;     else         cout<<n<<"不是素数!"<<endl;     system("pause");     return 0; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯