C语言练习——回文素数

案例描述

  若整数i从左向右读与从右向左读是相同的数,且i为素数,此时称其为回文素数。所谓素数是指只能由1和它本身整除的整数。
  对于偶数位的整数,只有11是回文素数。也就是说,除了11以外,所有的2位整数都不是回文素数。所有的4位整数、6位整数、8位整数中也不存在回文素数。但是三位回文素数有很多,比如:101、131、151、181、191、313等。本案例要求通过编程求出所有小于1000的回文素数。

案例分析

  因为要对所有1000以内的整数进行判断,所以此处适合用循环结构语句;又因为要判断是否为素数以及判断是否为回文素数,所以一定会用到选择结构语句。此案例综合了这两个重要的知识点,请灵活运用学过的知识解决此案例。

案例实现

案例设计

(1)先采用穷举法对1000以内所有整数进行遍历,判断其是否为素数。判断一个数是否为素数的关键在于,判定整数能否被1和它自身之外的其他整数所整除,如果都不能整除,则此数为素数;
(2)如果此数为素数,则继续判断此数是两位数还是三位数;
(3)如果为两位数,则判断其十位和个位是否相同,如果相同则说明此数为回文素数;如果是三位数,则判断其百位和个位是否相同,如果相同则说明此数为回文素数;
(4)最后将所有小于1000的回文素数打印输出到屏幕上即可。

完整代码

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int flag;
	//定义整型变量flag用来记录是否为素数,1代表是,0代表不是
	int n;
	int i;
	for (n = 10; n < 1000; n++)
	{
		for (i = 2; i < n; i++)
		{
			flag = 1;                        //flag默认为1
			if (n % i == 0)
			{
				flag = 0;                    //如果不符合素数要求,则把flag置为0
				break;                       //并跳出循环
			}
		}
		if (flag == 1)                        //判断是否是素数
		{
			if (n / 100 == 0)                //判断是否是两位数
			{
				if (n / 10 == n % 10)        //判断十位和各位是否相同
				{
					printf("%4d", n);
				}
			}
			else
			{
				if (n / 100 == n % 10)       //判断百位和个位是否相同
				{
					printf("%4d", n);
				}
			}
		}
	}
	printf("\n");
	system("pause");
	return 0;
}

  运行结果如下图所示。
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值