首页
学习
活动
专区
圈层
工具
发布

C语言---自幂数(“水仙花数”)

1.打印0~100000的自幂数 #include #include int main() { int i = 0; for (i = 0; i<100000;.../ 10; } if (sum == i) { printf("%d ", i); } } } 自幂数就是一个数字每个数位上的数的位数次方,例如三位数123,位数是3,即1的3...=123,所以不是自幂数; 对于这个题目,1~100000,我们要确定他的位数,对这个数字进行除10操作,123进入后得1,除10之后是12,12进入后是2,除10是1,1进入后n是3,除以10后是0,...跳出循环,这个时候得到的n就是位数; 接下来就是对每个数字求和,这里用到pow函数,这个函数有2个参数,第一个是底数,第二个是次数,我们从最低位开始计算,每次的结果加到sum上,对数字进行取余操作得到高一位的数字...所以如果直接使用i就会无法遍历1~100000的每一个数字,所以我们引入中间变量temp,把i数值赋值给temp,我们对temp进行操作,这样就不会影响i的数值; 当i和sum相同的时候,就是符合条件的自幂数

63210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【C语言】求斐波那契数列的第n位

    斐波那契数列------从第三项开始,每一项都等于前两项之和;而第一项和第二项都是1 1.非递归方法实现 主函数部分,定义变量,初始化变量,输入想求斐波那契数列的第n位 n int main()...&n); int a = 1; int b = 1; 将a和b初始化成1,即为斐波那契数列的第一位和第二位,然后将a+b赋给c,即为从第三项开始,每一项都等于前两项之和;每次相加完赋值之后...,将b的值赋给a,c的值赋给b,迭代下去;从第二位斐波那契数开始,每迭代一次就能得到下一位的斐波那契数,所以想求第n位的斐波那契数,就应该迭代n-2次. 1 1 2 3 5 8 13 21 34 55...递归方法实现 当n>2时,使用递归返回斐波那契数的前一位和前两位的和;当n<=2返回1....; int ret = Fib(n); printf("ret = %d\n",ret); return 0; } 当使用递归算斐波那契数列的第n位时,n较大时,计算量非常大

    41610

    codeforce 227E 矩阵快速幂求斐波那契+N个连续数求最大公约数+斐波那契数列的性质

    inputCopy 10 1 8 2 outputCopy 3 inputCopy 10 1 8 3 outputCopy 1 题意很简单,就是给你第L到第R个斐波那契额数列,让你选K个求K...个数的最大公约数模MOD; 在这里首先要明确性质,斐波那契数列第K个数与第S个数的最大公约数是,第N个斐波那契数,N为S与K的最大公约数。...所以这个题转化为先求N选K的最大公约数+矩阵快速幂求斐波那契,N选K的数的最大公约数,因为K是连续的,所有有这个性质,每N个数一定有一个N的倍数,这是后应该判断K与区间长度的关系,再判断L与R,与N的关系...带入最大公约数到矩阵快速幂即可。...std; int MOD=1e8+5; const int maxn=2; //定义方阵的阶数 struct JZ{ long long m[maxn][maxn]; };//定义maxn阶方阵

    60120

    函数递归与迭代附n的阶乘+顺序打印一个整数的每一位数+求第n个斐波那契数

    2.递归举例 2.1 举例1 :求n的阶乘 一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。 自然数n的阶乘写作n!。...n的阶乘的递归公式如下: 那我们就可以写出函数Fact求n的阶乘,假设Fact(n)就是求n的阶乘,那么Fact(n-1)就是求n-1的阶乘,函数如下: #include int Fact...如果n是一位数,n的每一位就是n自己 n超过1位数的话,就得拆分每⼀位。...当调用传的参数是一位数即1的时候打印1,随即回归依次打印2 3 4 3.递归与迭代 递归是⼀种很好的编程技巧,但是很多技巧⼀样,也是可能被误用的,就像举例1一样,看到推导的公式,很容易就被写成递归的形式...举例3:求第n个斐波那契数 我们先来了解一下斐波那契数: 斐波那契数列:1,1,2,3,5,8,13,21,34,55,89…… , 以递归的方法定义:从第三项开始,每一项都等于前两项之和

    47110

    C语言练习之求第n个斐波那契数

    前言 在C语言中,分别用递归和非递归两种方法实现求第n个斐波那契数 一、思路 首先分析一下关于斐波那契数列的原理: 第一个和第二个数都是1,之后的每个数都是前两个数之和,即: 1,1,2,3,5,8,...…… 1.非递归 用到了循环相关的知识, 当n>2的时候进入循环,将前两个数相加得到第三个数; 当n<=2的时候跳出循环。...非递归: 源代码: #include //递归和非递归分别实现求第n个斐波那契数 //非递归 int main() { int i = 1; int j = 1; int temp...= 0; int n = 0; int fib = 0; scanf("%d", &n); while (n > 0) { if (n > 2) { temp = j;...,本文简单的介绍了用C语言如何求解第n个斐波那契数的两种思路,还进一步展示了代码的运行结果验证了作者的思路。

    64430

    C 语言探索:从水仙花数到自幂数家族的奇妙之旅

    153、370、371、407); 4 位自幂数:四叶玫瑰数(1634、8208、9474); 5 位自幂数:五角星数(54748、92727、93084); 6 位自幂数:六合数(548834); 7...位自幂数:北斗七星数(1741725、4210818、9846852、9926315); 8 位自幂数:八仙数(24678050、24678051、88593477); 9 位自幂数:九九重阳数(144599291...这就是推广的本质:利用 “动态计算位数 + 按位求幂累加” 的通用逻辑,摆脱对 “3 位” 的依赖,覆盖自幂数家族的所有成员。...优化后的 “按位求幂” 代码如下: // 替代pow(tmp%10, n),计算digit的n次幂(整数版) int power(int digit, int n) { int result = 1;...printf("%d位自幂数有:\n", digit); for(int i=start;i<=end;i++) { int sum=0, n=digit; // 位数已知,直接赋值n=digit,无需再计算

    29410
    领券