230B - T-primes(數學規律+數論+模擬+普及級)
阿新 • • 發佈:2021-10-26
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 成文