3 条题解

  • 4
    @ 2022-7-26 13:04:44

    这道题的核心在于要明白一件事,只有平方数的约数才会是奇数个。像4有1,2,4三个约数;16有1,2,4,8,16五个约数,为什么呢?

    正常情况下,约数成对出现,q=n*k,而平方数有一对约数是相等的,固会有奇数个约数。

    设你要判断是否是"三质数"的数为q,那么首先q应该是平方数。一种用for枚举,一种用sqrt(),不过sqrt()在类型处理上会有点麻烦,我就选择用for了。

    n=sqrt(q),当n为质数(素数)时,q会是"三质数",原理不难,见下:

    若n为质数,则n=1n; q=1n1n; q=1nn q也就只会有1,n,n^2(q)三个质数了

    在最后附上代码: !不要直接复制粘贴! 对你毫无帮助

    #include<bits/stdc++.h>
    using namespace std;
    int t,q;
    //判断质数 
    bool check(int x)
    {
    	for(int i=2;i<=x/i;i++)
    	{
    		if(!(x%i)) return false;
    	}
    	return true;
    }
    int main()
    {
    	cin>>t;
    	for(int i=1;i<=t;i++)
    	{
    		int flag=0;
    		cin>>q;
    		if(q==1)
    		{
    			cout<<"NO"<<endl;
    			continue;
    		}
    		for(int j=1;j<=q/j;j++)
    		{
    			if(j*j==q && check(j))
    			{
    				cout<<"YES"<<endl;
    				flag=1;
    				break;
    			}
    		}
    		if(flag==0) cout<<"NO"<<endl;
    	}
    	return 0;
    }
    
    • 1
      @ 2022-8-22 9:20:05
      using namespace std;
      int n;
      int a[1005];
      int is(int n){
      	int z=0;
      	for(int i=1;i<=n;i++){
      		if(n%i==0){
      			z++;
      		}
      	}
      	if(z==2){
      		return 1;
      	}else{
      		return 0;
      	}
      }
      int main(){
      	cin>>n;
      	for(int i=1;i<=n;i++){
      		cin>>a[i];
      	}
      	for(int i=1;i<=n;i++){
      		int r=sqrt(a[i]);
      		if(is(r)==1 && r*r==a[i]){
      			cout<<"YES"<<endl;
      		}else{
      			cout<<"NO"<<endl;
      		}
      	}
      	return 0;
      }
      
      • 0
        @ 2022-8-2 13:39:53

        #include<bits/stdc++.h> using namespace std; bool sushu(int x) { for(int i=2;i<=sqrt(x);i++) { if(x%i==0) return 0; } if(x!=1) return 1; else return 0; } int main() { double n,x; cin>>n; for(int i=1;i<=n;i++) { cin>>x; if(double(sqrt(x))==int(sqrt(x))&&sushu(sqrt(x))) cout<<"YES"; else cout<<"NO"; cout<<endl; } return 0; }

        • 1

        信息

        ID
        71
        时间
        1000ms
        内存
        256MiB
        难度
        7
        标签
        递交数
        114
        已通过
        27
        上传者