230B - T-primes(数学规律+数论+模拟+普及级)
230B - T-primes(源地址自⇔CF230B)
Problem
Example
3
4 5 6
YES
NO
NO
tag:
⇔数学规律、⇔数论、⇔模拟、⇔普及级(*1300)
题意:
给出“T质数”的定义:有且仅有三个因数的数字(包括1和它自己)。
判断给出的数字是否是“T质数”。
思路:
质数 \(k\) 的因数有两个,分别是 \(1\) 和 \(k\) ;那么质数 \(k\) 的平方就有三个因数,分别是 \(1\) , \(k\) 和 \(k^2\) 。所以——“T质数”即为质数的平方数。
那么思路就很清晰了,可以使用埃氏筛打表完成,亦可以直接判断所给的数字是否是质数的平方数。
AC代码:
//A WIDA Project
#include<bits/stdc++.h>
using namespace std;
long long x, y;
bool judge(long long x) {
if(x == 1) return false;
for(int i = 2; i * i <= x; i ++) {
if(x % i == 0) return false;
}
return true;
}
int main() {
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int T;
cin >> T;
while(T -- > 0) {
cin >> x;
y = sqrt(x);
if(y * y == x && judge(y) == true) cout << "YES" << endl;
else cout << "NO" << endl;
}
return 0;
}
错误次数:0次,(补题)2次
原因:未特判1。
原因:未开加速,T了。
文 / WIDA
2021.10.26成文
首发于WIDA个人博客,仅供学习讨论
更新日记:
2021.10.27 更正错别字
2021.10.26 成文