题解:求满足条件n=a!+b!+c!的所有三位数n并输出

简介: 【题目】求满足条件n=a!+b!+c!的所有三位数n并输出,要求用自定义函数实现求阶乘。 【本讲结构】 (一)题目讲解视频 (二)相关习题 (三)此类题目的共有特征及典型算法 (四)视频中的代码 (五)部分相关习题的参考例程 【正文部分】 (一)题目讲解视频 (二)相关习题(带*的在后面有参考例程) 若一个正整数n的所有小于n的因子之和等于n, 则称n为完

【题目】求满足条件n=a!+b!+c!的所有三位数n并输出,要求用自定义函数实现求阶乘。
【本讲结构】
(一)题目讲解视频
(二)相关习题
(三)此类题目的共有特征及典型算法
(四)视频中的代码
(五)部分相关习题的参考例程

【正文部分】
(一)题目讲解视频


(二)相关习题(带*的在后面有参考例程)

  • 若一个正整数n的所有小于n的因子之和等于n, 则称n为完全数, 如6=1+2+3是完全数。判断正整数n是否为完全数。
  • 输出1000以内的所有完全数;
  • 输入一个正整数,判断其是否为一个素数;
  • 输出1000以内的所有素数;
  • 输入一个正整数,判断其是否为一个回文数(例1221、12321都是回文数);
  • 输出10000以内的所有回文数;
  • (*)输出输出10000以内的所有回文素数(提醒:某数是素数后再判断是否也是回文数。);
  • 若一个素数的反序数仍为素数,则称它为可逆素数。求10000以内的所有可逆素数。
  • 求1000000以内的正整数n,要求9n是n的反序数(例如,123是321的反序数)。
(三)此类题目的共有特征及典型算法

此类题目的共有特征是,需要考察一定范围内的数字符合某种特定的条件,从大的框架讲,就需要逐个考察相应范围内的每一个数字。因此,程的顶层结构是:

for(n=下限;n<=上限;n+=增量) //增量不一定固定为1
{
   为构造条件进行相关的计算;
   if(条件成立) 输出符合要求的结果
}
(四)视频中的代码

#include<iostream>
using namespace std;
int fact(int);
int main()
{
	int abc,a,b,c,sum;
	abc=100;
	while(abc<1000)
	{
		//考察abc是否符合要求
		c=abc%10;
		b=(abc/10)%10;
		a=abc/100;
		sum=fact(a)+fact(b)+fact(c);
		if(sum==abc)
			cout<<abc<<"  ";
		++abc;
	}
	return 0;
}

int fact(int n)
{
	int i, f=1;
	for(i=1;i<=n;++i)
		f=f*i;
	return f;
}

(五)部分相关习题的参考例程

(*)输出输出10000以内的所有回文素数(提醒:某数是素数后再判断是否也是回文数。);

#include "iostream.h"
#include "math.h"
void main()
{
    int i,j,s,n;
	cout<<2<<endl;
	for(i=3;i<10000;i+=2)
	{
		n=int(sqrt(i));
		for(j=3;j<=n;j+=2)    // 判断i是否为素数
			if (i%j==0) break;
			if (j<=n) continue;   // i不是素数
			n=i;
			s=0;
			while(n)              // 求n的反序数s
			{
                s=10*s+n%10;     // 将上次累加和的10倍与新分离出的位相加
                n/=10;           // 将n缩小10倍
			}
			if (s==i) cout<<i<<endl;  // i与其反序数相等,i是回文数
	}
}


目录
相关文章
|
7月前
|
算法
LeetCode算法题---无重复字符的最长子串、寻找两个正序数组的中位数(三)
LeetCode算法题---无重复字符的最长子串、寻找两个正序数组的中位数(三)
66 0
|
2月前
循环输出指定区间范围的偶数
【10月更文挑战第14天】循环输出指定区间范围的偶数。
48 3
|
7月前
|
Python
如何判断一个数是质数? 要求:编写一个Python函数,输入一个整数,输出该整数是否为质数。质数是指大于1的自然数中,除了1和它本身以外不再有其他因数的数。
如何判断一个数是质数? 要求:编写一个Python函数,输入一个整数,输出该整数是否为质数。质数是指大于1的自然数中,除了1和它本身以外不再有其他因数的数。
380 1
|
6月前
循环迭代判断\找质数——以每行8个的形式输出100-999内的质数
循环迭代判断\找质数——以每行8个的形式输出100-999内的质数
81 5
|
人工智能 C++
acwing 712 正数 C++循环得到输入的以及获取数组长度
acwing 712 正数 C++循环得到输入的以及获取数组长度
72 1
|
算法 C语言 C++
【二分查找】668. 乘法表中第k小的数
【二分查找】668. 乘法表中第k小的数 在另一篇博客里讲过二分法的模板: 《二分法的模板讲解》
71 0
|
算法 安全 Swift
LeetCode - #9 判断回文数字
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
05a for循环实践-查找水仙花数
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。
96 0
LeetCode 1502. 判断能否形成等差数列
如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 。
110 0
复习C部分:1.for循环 2.do while循环语句 3.在一个有序数组中查找某个数,例如在1~10之间找7(例题包含计算n的阶乘+打印1~10的奇数+二分法)
复习C部分:1.for循环 2.do while循环语句 3.在一个有序数组中查找某个数,例如在1~10之间找7(例题包含计算n的阶乘+打印1~10的奇数+二分法)
120 0
复习C部分:1.for循环 2.do while循环语句 3.在一个有序数组中查找某个数,例如在1~10之间找7(例题包含计算n的阶乘+打印1~10的奇数+二分法)