求思路(代码请附上思路)

V. 三质数

Problem ID: 1194

Contest ID: 5697

必做题

时间限制:1s 空间:256M

题目描述:

一个数的约数也称为因子,比如1是6的因子,2是6的因子,6是6的因子。

质数只有两个因子,1和它本身

现在定义一种新的质数,三质数,三质数只有三个不同的因子。比如4是三质数,因为它有1,2,4三个因子。比如6不是三质数,因为6有1,2,3,6四个因子。现在有一些数,你需要判断他们是不是三质数。

输入格式:

第一行一个整数T,表示有T组测试数据。

每组测试数据输入一个整数n

输出格式:

对于每组测试数据,判断是否是三质数,如果是输出YES,否则输出NO

样例输入:

3 4 5 6

样例输出:

YES NO NO

约定:

1<=n<=1012,数据组数不超过103

中文:

V. 三质数

Problem ID: 1194

Contest ID: 5697

必做题

时间限制:1s 空间:256M

题目描述:

一个数的约数也称为因子,比如1是6的因子,2是6的因子,6是6的因子。

质数只有两个因子,1和它本身

现在定义一种新的质数,三质数,三质数只有三个不同的因子。比如4是三质数,因为它有1,2,4三个因子。比如6不是三质数,因为6有1,2,3,6四个因子。现在有一些数,你需要判断他们是不是三质数。

输入格式:

第一行一个整数T,表示有T组测试数据。

每组测试数据输入一个整数n

输出格式:

对于每组测试数据,判断是否是三质数,如果是输出YES,否则输出NO

样例输入:

3 4 5 6

样例输出:

YES NO NO

约定:

1<=n<=1012,数据组数不超过103

有人吗

没有(doge

(doge)

首先你需要一个判断质数的函数

1 个赞

?怎么没了

1 个赞

输入一个数n之后接着输入n个数(我们把输入的那个数看做a)因为sqrt不能求到精准值,我们接着这个特性接着求:if(sqrt(a)*sqrt(a)==a)然后输出yes接着continue,否则输出no

1 个赞

需要完整代码吗?

1 个赞

可以

可以附上思路吗

当然

1 个赞

谢了

此贴结

@论坛管理委员会 此贴结

三质数:质数的平方
判断一个数是否是三质数:
设这个数为x
①判断该数是否是完全平方数,sqrt(x)==int(sqrt(x)),成立为完全平方数,否则不是。
②判断sqrt(x)是否为质数
两条均成立,则这个数是完全平方数
附上代码:

#include <bits/stdc++.h>
using namespace std;
int n,a[1010];
int prime(int n)
{
    if(n<2)return false;
    for(int i=2;i<=sqrt(n);i++)
        if(n%i==0)return false;
    return true;
}
int main()
{
	cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    for(int i=1;i<=n;i++)
    {
        double x=sqrt(a[i]);
        if(x==int(x) && prime(x))cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
    return 0;
}
6 个赞

抱歉,点赞到上限了,到时再点

3 个赞