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 成文
 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号