初莫M 发表于 2023-11-4 19:27:49

为什么有些数据输出结果错误啊

输入描述
第一行,一个整数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;
    }
}

isdkz 发表于 2023-11-4 19:27:58

问题出在循环条件上。在判断一个数是否为素数时,应该将循环条件改为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]
查看完整版本: 为什么有些数据输出结果错误啊