判断一个数是不是立方质数

it2026-08-08  2

时间限制 1000 ms 内存限制 64 MB

题目描述

如果一个质数能被表示为三个不同的质数的和的形式,那么我们称它为立方质数。现在给你一个数n,判断它是不是立方质数。

输入数据

正整数n,n<=1000

输出数据

Yes或者No

样例输入

19

样例输出

Yes #include <iostream> #include <cmath> using namespace std; int isPrime(int n) { float n_sqrt; if (n == 2 || n == 3) return 1; if (n % 6 != 1 && n % 6 != 5) return 0; n_sqrt = floor(sqrt((float)n)); for (int i = 5; i <= n_sqrt; i += 6) { if (n % (i) == 0 | n % (i + 2) == 0) return 0; } return 1; } int main() { int n; cin >> n; if (!isPrime(n)) { cout << "No" << endl; return 0; } int j = 0; int prim[1000] = { 0 }; for (int i = 2; i < 1001; i++) { if (isPrime(i)) { prim[j++] = i; } } while (prim[j-1] >= n) { j--; } for (int x = 0; x < j; x++) { for (int y = x + 1; y < j; y++) { for (int z = y + 1; z <= j; z++) { int ans = prim[x] + prim[y] + prim[z]; if (ans == n) { //cout << prim[x] << "-" << prim[y] << "-" << prim[z] << endl; cout << "Yes" << endl; return 0; } if (ans > n) { break; } } } } cout << "No" << endl; return 0; }
最新回复(0)