0
已解决
李宜和
高级启示者
高级启示者
错误代码:
#include<iostream>
#include<iomanip>
#include<cmath>
#include<cstdio>
using namespace std;
string a;
long long n,m,t,f1,f2,s;
int main(){
cin>>m>>n;
for(int i=n;i<=m;i++){
f1=1;
f2=1;
t=i;
while(t){
a+=char(t%10+48);
t/=10;
}
int l=a.size();
for(int j=0;j<=l/2;j++){
if(a[j]!=a[l-j-1]){
f1=0;
}
}
for(int k=2;k<=sqrt(i);k++){
if(i%k==0){
f2=0;
break;
}
}
if(f1&&f2){
s++;
}
}
cout<<s;
return 0;
}
李宜和在2021-10-28 18:18:46追加了内容
@马烨烨
#include<iostream>
#include<iomanip>
#include<cmath>
#include<cstdio>
using namespace std;
bool ss(int n){
if(n==1){
return false;
}
for(int i=1;i<=sqrt(n);i++){
if(n%i==0){
return false;
}
}
return true;
}
bool hw(int n){
int m=0,t=n;
while(t){
m=m*10+t%10;
t/=10;
}
return (m==n);
}
int main(){
int n,m,cnt=0;
cin>>n>>m;
for(int i=n;i<=m;i++){
if(hw(i)&&ss(i)){
cnt++;
}
}
cout<<cnt;
return 0;
}
哪错了
李宜和在2021-10-28 18:20:17追加了内容
@吕梓瑜
0
已采纳
吕梓瑜
初级天翼
初级天翼
bool ss(int n){
if(n==1) return false;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0) return false;
}
return true;
}
bool hw(int n){
int m=0,t=n;
while(t){
m=m*10+t%10;
t/=10;
}
return (m==n);
}
把回文和素数放在函数里
主函数里循环m到n判断
if(hw(i) && ss(i)){
cnt++;
}
求采纳~
0
马烨烨
初级守护
初级守护
这个思路是:
1.从n到m开始枚举,if要先判断是否为回文数,在判断是否为素数(这样时间复杂度低一点不容易超时)
2.回文数的判断
bool hw(int x)
{
int t=x,y=0;
while(t)
{
y=y*10+t%10;
t/=10;
}
if(x==y)
return true;
return false;
}
3.这是素数的判断
bool Judge(int x)
{
if(x<2) return false;
for(int i=2;i<=sqrt(x);i++)
{
if(x%i==0)
return false;
}
return true;
}
0
0
张程阳
新手天翼
新手天翼
bool f(int x){ if(x==1)return false; for(int i=2;i<=sqrt(x);i++){ if(x%i==0)return false; } return true; }//函数
if(f(i)){ int sum=i; int cnt1=0; while(sum!=0){ cnt1=cnt1*10+sum%10; sum/=10; } if(i==cnt1)cnt++; }//核心
0