C语言判别m和n之间的回文素数(数组)


问题:

        求m~n(m≥10,n≤10000)之间的回文素数,所谓回文素数,即这个数既是回文又是素数。程序首先要判断某个数是否是回文,再判断是否是素数。如果是回文素数,则保存于数组中,并按6位域宽输出,每行输出5个。

输入:

        m n

输出:

        m~n之间的回文素数,每个数占6位,每行限输出5个。

例如:

        

代码:

   

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

void main()
{
	int m,n,i,j,k,sum;
	int a[1000],t=1;
	scanf("%d%d",&m,&n);
	for(i=m;i<=n;i++)
	{
		int s1=1,s2=1;
		sum=0;j=i;
		while(j>0)//判断回文 
		{
			sum=sum*10+j%10;
			j=j/10;
		}
		if(sum==i)
		{
			s1=0;
		}
		for(k=2;k<=sqrt(i);k++)//判断素数 
		{
			if(i%k==0)
			   s2=0;
		}
		if(s1==0 && s2==1)
		{
			a[t++]=i;
		}
	}
	for(i=1;i<t;i++)
	{
		if(i%5!=0)
		   printf("%6d",a[i]);
		else
		   printf("%6d\n",a[i]);
	}
}

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM