求帮助
查看原帖
求帮助
657700
dog_of_mayi_is_me楼主2022/4/3 15:06

不理解第一个测试点为什么过不去,答案一模一样

#include<iostream>
#include<math.h>
using namespace std;
void write(int x)
{
	if(x>9) write(x/10);
	putchar(x%10+'0');
}
int nb(int a)
{
	for(int i=2;i<=sqrt(a);i++)
	{
		if(a%i==0)
			return 0;
	}
	return 1;
}
int main()
{	
	int s,n=0,m,x,i,s1=1000,s2=10000,a,xl;
	cin>>i>>m;
	if(i==5&&m>=11)
		cout<<"5"<<endl<<"7"<<endl<<"11"<<endl;
	if(i%2==0)
		i=i-1;
	for(;i<=m;i+=2)
	{	
		//筛除偶数位 
		if(s1<=i&&i<=s2)
			{
				i=s2-1;
				s1*=100;
				s2*=100;
				continue;
			}
		//筛除首位 
		xl=0;
		a=i;
		while(a>10)
		{
			a=a/10;
			xl++;
		}
		if(a==2||a==4||a==5||a==6||a==8||a==0)
		{
			i=i+10*pow(10,xl-1);
			continue;
		}
		//判断回文数 
		s=i;
		while(s!=0)
		{
			x=x*10+s%10;
			s=s/10;
		}
		//输出i 
		if (nb(i)==1&&x==i)
		{
			write(i);
			cout<<endl;
		}
		n=0;
		x=0;
	}
	return 0;
}
2022/4/3 15:06
加载中...