LHX_18460366315 @ 2024-02-05 15:45:07
这个代码我核对了 N 遍,结果仍然还是没有输出。。。。。。
#include<bits/stdc++.h>
using namespace std;
bool zhishu(long long x){
if (x <= 1){
return false;
}
for (long long i = 1;i <= sqrt(x);i++){
if (x % i == 0){
return false;
}
}
return true;
}
bool check(int x){
int a[20],flag = 1;
while (x > 0){
a[flag] = x % 10;
x /= 10;
flag++;
}
for (int i = 1; i <= flag / 2;i++){
if(a[i] != a[flag - i]){
return false;
}
}
return true;
}
bool weishu(int x){
if((1000 <= x && x <= 9999) || (100000 <= x && x <= 999999)){
return false;
}
return true;
}
int main(){
long long n,m;
cin >> n >> m;
for (long long i = n;i <= m;i += 2){
if (zhishu(i) && check(i) && weishu(i)){
cout << i << endl;
}
}
return 0;
}
by HUDSI1265 @ 2024-02-20 17:36:58
1.你这边判断回文写的比较繁琐 帮你改了下
bool check(int x){
int x1=0,t=x;
while(t){
x1=x1*10+t%10;
t/=10;
}
if(x==x1)return 1;
return 0;
}
2 你主函数部分写错了
for (long long i = n;i <= m;i += 2){
if (zhishu(i) && check(i) && weishu(i)){
cout << i << endl;
}
}
的+=2应该改成++ 3.提交上去只会66分 因为这题时间复杂度较高,要用线型筛