0
已解决
万韧山
初级天翼
初级天翼
#include<bits/stdc++.h>
using namespace std;
bool t[100000005];
bool hw(int n){
int a[100],cnt=0;
while(n!=0){
a[++cnt]=n%10;
n/=10;
}
int i=1;
while(i<=cnt){
if(a[i]!=a[cnt]) return 0;
i++;
cnt--;
}
return 1;
}
int main(){
//取个位 %10
//取十位 /10
//取百位 /100%10
//取千位 /1000%10
//freopen("题目英文名.in","r",stdin);
//freopen("题目英文名.out","w",stdout);
int a,b;
cin>>a>>b;
t[1]=1;
for(int i=a;i<=b;i++){
if(!t[i]){
for(int j=i*2;j<=b;j+=i){
t[j]=1;
}
}
}
for(int i=a;i<=b;i++){
if(!t[i]&&hw(i)) cout<<i<<endl;
}
//fclose(stdin);
//fclose(stdout);
return 0;
}
TLE0分
0
0
0
0
宋子墨
新手天翼
新手天翼
首先
回文函数就有问题(仅个人觉得)
这样改
建议把上面定义的bool类型数组删除
bool hw(int n) 这一行是不用改的
{
定义int 变量 t,s=n;
while循环,条件是n
循环里写
{
t=t*10+n%10;
n/=10;
}
return t==s;
}
再来个判断质数的函数,应该都学过
定义long long类型变量a和b
输入a和b cin就行
for循环(long long i=a;i<=b;i++)
循环条件{
如果i<=10000000并且i是回文数并且i是质数
输出i和换行
}
0
0
0
0
郝天尘
资深光能
资深光能
@万韧山
你这个回文可以这样写
函数 定义n
定义t是0, 定义 s等于 n;
循环(定义的n) {
t等于t乘10加定义的n模10;
定义的n除等于10
}
返回t等于s
主函数
定义long long类型变量a和b
输入a和b cin就行
for循环longlong一个i,i=a,i小于等于b
判断条件{
如果i<=10000000并且i是回文数并且i是质数
输出i和换行
0
宋子墨
新手天翼
新手天翼
bool isprime(long long n){//质数
如果n<=1
直接return 0;
for循环2到sqrt(n)
{
如果n%i==0
直接return 0;
}
return 1;
}
0
宋子墨
新手天翼
新手天翼
循环a到n的for循环中的i要定义为long long
输出条件是i小于等于10000000注意是一千万一定要先写这个再写是不是回文数和是不是质数!
0
0
0
0
0
0