ybt 1409:判决素数个数
OpenJudge NOI 1.13 10:判决素数个数
注:一本通OJ的数据较弱,默认x比y小。OpenJudge上存在x比y大的数据点。根据题意,应该预处理x比y大的情况。
设函数判断一个数是否是质数
该题需要注意的点是:给定的x,y的范围为:
1
≤
x
,
y
≤
1
0
5
1le x, y le 10^5
1≤x,y≤105
这种写法并没有指明x,y的相对大小,不能确定到底是x更大还是y更大。
那么我们需要做一下预处理,如果
x
>
y
x>y
x>y,那么二者交换,使得一定是
x
≤
y
xle y
x≤y。
#include解法2:使用swap交换两个数using namespace std; bool isPrime(int n)//判断正整数n是否是质数 { if(n < 2) return false; for(int i = 2; i <= sqrt(n); ++i) if(n % i == 0) return false; return true; } int main() { int ct = 0, x, y, t; cin >> x >> y; if(x > y) {//使x,y一定满足x<=y t = x; x = y; y = t; } for(int i = x; i <= y; ++i) { if(isPrime(i)) ct++; } cout << ct; return 0; }
#includeusing namespace std; bool isPrime(int n)//判断正整数n是否是质数 { if(n < 2) return false; for(int i = 2; i <= sqrt(n); ++i) if(n % i == 0) return false; return true; } int main() { int ct = 0, x, y; cin >> x >> y; if(x > y)//使x,y一定满足x<=y swap(x, y); for(int i = x; i <= y; ++i) if(isPrime(i)) ct++; cout << ct; return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)