1. 程式人生 > 其它 >230B - T-primes(數學規律+數論+模擬+普及級)

230B - T-primes(數學規律+數論+模擬+普及級)

2021.10.20隊內周賽第一題,2021.10.26補題

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.26 成文