素数回文数的个数
- C语言代码
- C++ 代码
- Java代码
- Python代码
💐The Begin💐点点关注,收藏不迷路💐 |
求11到n之间(包括n),既是素数又是回文数的整数有多少个。
输入
一个大于11小于1000的整数n。
输出
11到n之间的素数回文数个数。
样例输入
23
样例输出
1
C语言代码
#include <stdio.h>
#include <stdbool.h>
// 判断一个数是否为素数
bool isPrime(int num) {
if (num < 2) return false;
for (int i = 2; i * i <= num; i++) { // 从2到根号num判断能否整除
if (num % i == 0) return false;
}
return true;
}
// 判断一个数是否为回文数
bool isPalindrome(int num) {
int original = num;
int reversed = 0;
while (num > 0) {
reversed = reversed * 10 + num % 10; // 取出个位数字并构造反转后的数
num /= 10;
}
return original == reversed; // 判断原数和反转后的数是否相等
}
int main() {
int n;
scanf(“%d”, &n);
int count = 0;
for (int i = 11; i <= n; i++) { // 遍历11到n的数
if (isPrime(i) && isPalindrome(i)) { // 如果既是素数又是回文数
count++;
}
}
printf(“%d\n”, count);
return 0;
}
C++ 代码
#include <iostream
>
#include <cmath
>
using namespace std;
// 判断一个数是否为素数
bool isPrime(int num) {
if (num < 2) return false;
for (int i = 2; i <= sqrt(num); i++) { // 从2到根号num判断能否整除
if (num % i == 0) return false;
}
return true;
}
// 判断一个数是否为回文数
bool isPalindrome(int num) {
int original = num;
int reversed = 0;
while (num > 0) {
reversed = reversed * 10 + num % 10; // 取出个位数字并构造反转后的数
num /= 10;
}
return original == reversed; // 判断原数和反转后的数是否相等
}
int main() {
int n;
cin >> n;
int count = 0;
for (int i = 11; i <= n; i++) { // 遍历11到n的数
if (isPrime(i) && isPalindrome(i)) { // 如果既是素数又是回文数
count++;
}
}
cout << count << endl;
return 0;
}
Java代码
import java.util.Scanner;
public class PrimeAndPalindrome {
// 判断一个数是否为素数
static boolean isPrime(int num) {
if (num < 2) return false;
for (int i = 2; i * i <= num; i++) { // 从2到根号num判断能否整除
if (num % i == 0) return false;
}
return true;
}
// 判断一个数是否为回文数
static boolean isPalindrome(int num) {
int original = num;
int reversed = 0;
while (num > 0) {
reversed = reversed * 10 + num % 10; // 取出个位数字并构造反转后的数
num /= 10;
}
return original == reversed; // 判断原数和反转后的数是否相等
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int count = 0;
for (int i = 11; i <= n; i++) { // 遍历11到n的数
if (isPrime(i) && isPalindrome(i)) { // 如果既是素数又是回文数
count++;
}
}
System.out.println(count);
}
}
Python代码
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1): // 从2到根号num判断能否整除
if num % i == 0:
return False
return True
def is_palindrome(num):
return str(num) == str(num)[::-1] // 判断原数字字符串和反转后的字符串是否相等
n = int(input())
count = 0
for i in range(11, n + 1): // 遍历11到n的数
if is_prime(i) && is_palindrome(i): // 如果既是素数又是回文数
count += 1
print(count)
💐The End💐点点关注,收藏不迷路💐 |