读书人

在做求素数作业碰到很奇怪的有关问题

发布时间: 2013-06-26 14:29:32 作者: rapoo

在做求素数作业碰到很奇怪的问题 求大神解释
#include <stdio.h>
#include <math.h>
#include <iostream>

using namespace std;

bool isPrime(int);

int main(){
/*int n;
cout<<"please enter your number 'N' then press ENTER"<<endl;
cin>>n;*/
int n=100;

for(int i=2;i<=n;i++){

if(isPrime(i))
cout<<i<<" ";

}




system("pause");
return 0;
}


//bool isPrime(int i){
//int m,n;
//n=sqrt(i*1.0);
//if(i==1) return 0;
//else for(int m=2;m<=n;m++){
// if(i%m == 0)
// return false;
//return true;
//}
//}

bool isPrime(int i){
int m,n,count=0;
n=sqrt(i*1.0);
for(m=2;m<n;m++){
if(i%m == 0)
count++;}

if(count==0)
return true;

}


以上是我写的代码 为什么出来的解老师错的呢?真是郁闷,求大神帮忙哈,谢啦! c c++ visual?studio 素数 math.h
[解决办法]


#include <stdio.h>
#include <math.h>
#include <iostream>
using namespace std;
bool isPrime(int);
int main(){
int n=100;
for(int i=2;i<=n;i++){
if(isPrime(i))
cout<<i<<" ";
}
system("pause");
return 0;
}
bool isPrime(int i){
int m,n,count=0;
n=sqrt(i*1.0);
for(m=2;m<=n;m++){
if(i%m == 0)
count++;}
if(count==0)
return true;
return false;
}


[解决办法]

bool isPrime(int i){
int m,n,count=0;
n=sqrt(i*1.0);
for(m=2; m<=n; m++){//这里应该要<=。。
if(i % m == 0)
count++;
}
if(count==0)
return true;
return false;//这里不是素数的要return false啊。。
}

[解决办法]
你注释的没什么问题
可能是你看错了,括号扩错了
bool isPrime(int i){
int m,n;
n=sqrt(i*1.0);
if(i==1) return 0;
else for(int m=2;m<=n;m++){
if(i%m == 0)
return false;
}return true;//括号括在这里
}

读书人网 >C++

热点推荐