方法一:
[C++] 纯文本查看 复制代码 bool prime(int x){
int i=2;
if(x==1||x==0) return false;
while(i<=floor(sqrt(x))&&(x%i!=0))
i++;
if(i>floor(sqrt(x))) //此条件作用:边界限制
return true;
return false;
}
如果没有边界限制则是:
[C++] 纯文本查看 复制代码 #include <bits/stdc++.h>
using namespace std;
bool prime(int x){
int i = 2;
if(x == 1) return 0;
while(i <= floor(sqrt(x)) && x % i != 0) {
i++;
return 1;
}
return 0;
}
int main(){
int n;
scanf("%d",&n);
printf("%d",prime(n));
return 0;
}
但是此时很多情况会被排除,例如:2,3.....
放入主程序中分辨:
[C++] 纯文本查看 复制代码 int main(){
int i = 2, x;
cin >> x;
while(i <= floor(sqrt(x)) && x % i != 0) i++;
cout << i<< endl;
if(i > floor(sqrt(x))) cout << x << " " << "i=" <<i;
return 0;
}
方法二:
[C++] 纯文本查看 复制代码 #include <bits/stdc++.h>
using namespace std;
int main(){
int x, y, t = 0;
cin >> x >> y;
if(x==1) t --;
bool flag;
for(int i = x; i <= y; i++){
flag = true;
for(int j = 2;j <= sqrt(i); j++){
if(i % j == 0 ) {
flag = false;
break;
}
}
if(flag == true) {
t++;
}
}
cout << t;
return 0;
}
|