求助,答案是对的但第一个点一直WA
查看原帖
求助,答案是对的但第一个点一直WA
584188
Maugham21013079楼主2021/11/18 17:36

萌新不解

#include<stdio.h> 
#include<math.h>

int prime(long long n)//质数判断函数 
{
	int i,flag=1;
	if(n<2)
		flag=0;
	for(i=2;i<=sqrt(n);i++)
		if(n%i==0)
		{
			flag=0;
			break;
		}
	return flag;
}


int huiwen(long long x,long long y)
{
	long long palindrome;
	int d1,d2,d3,d4;
	for (d1 = 5; d1 <= 9; d1+=2) //长度为1
	{    
        palindrome = d1;
        if(prime(palindrome)==1&&palindrome>=x&&palindrome<=y)
			printf("%lld\n",palindrome);
 	}
 	
 	for (d1 = 1; d1 <= 9; d1+=2) //长度为2
	{    
        palindrome = 10*d1 +d1;
        if(prime(palindrome)==1&&palindrome>=x&&palindrome<=y)
			printf("%lld\n",palindrome);
 	}
	
	for (d1 = 1; d1 <= 9; d1+=2) //长度为3
	{    
     	for (d2 = 0; d2 <= 9; d2++) 
		{
           		palindrome = 100*d1 + 10*d2 +d1;
           		if(prime(palindrome)==1&&palindrome>=x&&palindrome<=y)
				   	printf("%lld\n",palindrome);
     	}
 	}
	
	for (d1 = 1; d1 <= 9; d1+=2) //长度为4
	{    
     	for (d2 = 0; d2 <= 9; d2++) 
		{
           		palindrome = 1000*d1 + 100*d2+ 10*d2+ d1;
           		if(prime(palindrome)==1&&palindrome>=x&&palindrome<=y)
				   	printf("%lld\n",palindrome);
     	}
 	}
	
	for (d1 = 1; d1 <= 9; d1+=2) //长度为5 
	{    
     	for (d2 = 0; d2 <= 9; d2++) 
		{
         	for (d3 = 0; d3 <= 9; d3++) 
			{
           		palindrome = 10000*d1 + 1000*d2 +100*d3 + 10*d2 + d1;
           		if(prime(palindrome)==1&&palindrome>=x&&palindrome<=y)
				   	printf("%lld\n",palindrome);
         	}
     	}
 	}
 	
 	for (d1 = 1; d1 <= 9; d1+=2) //长度为6 
	{    
     	for (d2 = 0; d2 <= 9; d2++) 
		{
         	for (d3 = 0; d3 <= 9; d3++) 
			{
           		palindrome = 100000*d1 + 10000*d2 +1000*d3+100*d3 + 10*d2 + d1;
           		if(prime(palindrome)==1&&palindrome>=x&&palindrome<=y)
				   	printf("%lld\n",palindrome);
         	}
     	}
 	}
 	
 	for (d1 = 1; d1 <= 9; d1+=2) //长度为7 
	{    
     	for (d2 = 0; d2 <= 9; d2++) 
		{
         	for (d3 = 0; d3 <= 9; d3++) 
			{
				for (d4 = 0; d4 <= 9; d4++) 
				{
           			palindrome = 1000000*d1 + 100000*d2 +10000*d3 +1000*d4 +100*d3 + 10*d2 + d1;
           			if(prime(palindrome)==1&&palindrome>=x&&palindrome<=y)
				   		printf("%lld\n",palindrome);
				}
         	}
     	}
 	}
 	
}

int main()
{
	long long a,b;
	scanf("%d %d",&a,&b);
	huiwen(a,b);
	return 0;
}
2021/11/18 17:36
加载中...