|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
输入描述
第一行,一个整数T(1 <= T <= 100),表示询问的次数
下面T行,每行一个整数x(1<=x <= 100000000)第一行,一个整数T(1 <= T <= 100),表示询问的次数
输出描述
输出T行,对于T次询问,是素数输出"Yes"(不包含引号),不是素数输出"No"(不包含引号)
- #include<bits/stdc++.h>
- using namespace std;
- int su(int x)
- {
- if(x<2) return 0;
- for(int i=2;i<sqrt(x);i++)
- {
- if(x%i==0) return 0;
- }
- return 1;
- }
- int main()
- {
- int t,n;
- cin>>t;
- while(t--)
- {
- cin>>n;
- if(su(n)) cout<<"Yes"<<endl;
- else cout<<"No"<<endl;
- }
- }
复制代码
问题出在循环条件上。在判断一个数是否为素数时,应该将循环条件改为 i <= sqrt(x) ,而不是 i < sqrt(x) 。因为 sqrt(x) 的结果可能是一个浮点数,而循环条件中的 i 是一个整数,所以应该使用 <= 来判断。修改后的代码如下所示:
- #include<bits/stdc++.h>
- using namespace std;
- int su(int x)
- {
- if(x<2) return 0;
- for(int i=2;i<=sqrt(x);i++)
- {
- if(x%i==0) return 0;
- }
- return 1;
- }
- int main()
- {
- int t,n;
- cin>>t;
- while(t--)
- {
- cin>>n;
- if(su(n)) cout<<"Yes"<<endl;
- else cout<<"No"<<endl;
- }
- }
复制代码
这样修改后,代码就可以正确地判断一个数是否为素数了。
|
|