为什么有些数据输出结果错误啊
输入描述第一行,一个整数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;
}
}
这样修改后,代码就可以正确地判断一个数是否为素数了。
页:
[1]