题解
素数对
2 条题解
-
0
#include<bits/stdc++.h> using namespace std; bool isprime(int s) {//判断质数的函数 if (s <= 1) {//1不是质数 return false; } //在2~s-1这个范围内找因数,只要因数存在就不是质数 for (int i = 2; i <= s - 1; i++) { if (s % i == 0) {//只要能被整除,就不是质数 return false; } } return true;//上面两个部分都没有返回,就说明这是一个质数 } int main(){ int n; cin >> n; if (n < 5) {//小于5没有质数对 cout << "empty"; } //扫描n以内的素数对 for (int i = 1; i <= n - 2; i++) {//循环范围不可以超过n - 2 if (isprime(i) && isprime(i + 2)) { cout << i << ' ' << i + 2 << endl ; } } return 0; } -
0
#include <iostream> using namespace std; // 判断一个数是不是素数 bool isPrime(int x) { // 小于 2 的数不是素数 if (x < 2) { return false; } // 从 2 枚举到 sqrt(x) // 如果 x 能被 i 整除,说明 x 不是素数 for (int i = 2; i * i <= x; i++) { if (x % i == 0) { return false; } } // 没有找到因数,说明是素数 return true; } int main() { int n; cin >> n; bool found = false; // 记录有没有找到素数对 // 枚举第一个素数 i // 因为第二个数是 i + 2,所以 i + 2 必须 <= n for (int i = 2; i + 2 <= n; i++) { if (isPrime(i) && isPrime(i + 2)) { cout << i << " " << i + 2 << endl; found = true; } } // 如果没有找到任何素数对,输出 empty if (!found) { cout << "empty" << endl; } return 0; }
- 1