Help me!
查看原帖
Help me!
1273463
Lin_Ziluo楼主2024/4/10 18:25

出了什么问题吗?

#include <iostream>
#include <iomanip>
#include <cstdio>
#include <fstream>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
int a[15];
bool hwzs(int x){
	int ans1 = 0,ans2 = 0,ans = 0;
	for (int i = 2;i < x;i++) if (!(x % i)) return false; //刷掉合数。
	if (!(x / 10)) return true; //特判x为一位数的情况。 
	while (x){
		a[++ans] = x % 10;
		x /= 10;
	} //分离各位。 
	if (ans % 2){ //按位数的奇偶分开算。 
		for (int i = 1;i <= ans / 2 + 1;i++) ans1 += a[i] * pow(10,i - 1);
		for (int i = ans / 2 + 1;i <= ans;i++) ans2 += a[i] * pow(10,i - ans / 2 - 1); //如:a = {1,2,1},会分成12和21。  
	}else{
		for (int i = 1;i <= ans / 2;i++) ans1 += a[i] * pow(10,i - 1);
		for (int i = ans / 2 + 1;i <= ans;i++) ans2 += a[i] * pow(10,i - ans / 2 - 1); //如:a = {1,2,3,4},会分成12和34。 
	}                                                                           
	if (ans1 == ans2) return true;
	else return false; //判断是否是回文数。 
}
int main(){ //霉好的开始。 
	int a,b;
	cin >> a >> b; //输入a和b。 
	for (int i = a;i <= b;i++) if (hwzs(i)) cout << i << endl; //挨个判断是否是回文质数,是就输出。 
	return 0; //霉好的结束。 
}
2024/4/10 18:25
加载中...