算法题(素数回文数判断)

题目描述

求11到n之间(包括n),既是素数又是回文数的整数有多少个。
(提示:回文数指左右对称的数,如:292,333。)

输入

算法题(素数回文数判断)_第1张图片

输出

算法题(素数回文数判断)_第2张图片

解题思路

1、质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
2、素数的判断:
方法1:判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。
方法2:整数m如果不能被2~√m间任一整数整出,则m必定是个素数,因为如果 m 能被 2 ~ m-1 之间任一整数整除,其二个因子必定有一个小于或等于√m ,另一个大于或等于√m 。
3、回文数的判断:
当是两位数的时候,只需要判断个位:i%10和十位:i/10相等,就是回文数。
当是三位数的时候,需要判断个位:i%10和百位:i/100相等。
4、定义一个判断素数的函数。判断即是素数又是回文数,计数器加1。

参考代码

#include
#include
	int sushu(int m)
	{
		int k=(int)sqrt(m);
		for(int i=2;i<=k;i++)
		if(m%i==0)
	{
		return 0;
		break;
					}
		return 1;
						}
	int main()
{
		int a,i,count;
		scanf("%d",&a);
		count=0;
	for( i=11;i<=a;i++)
	{
			if(sushu(i)==1)
		{
		if(i<100&&i/10==i%10)
		count++;
		else if(i>100&&i/100==i%10)
		count++;
		}
	}
	printf("%d\n",count);

	return 0;
}

你可能感兴趣的:(算法基础题)