在编程中, 强数是一个特殊数字, 其每个数字的阶乘之和等于原始数字。例如:
!1 + !4 + !5 = 145
不, 那个!不是编程的否定一元运算符, 这意味着数学中的阶乘数(在此处了解如何在C中了解数字的阶乘)。在本文中, 我们将向你介绍C语言中一个非常有用的代码段, 可让你确定数字是否为强。
实现
对于新手来说, 确定数字是否强的代码逻辑可能有些棘手, 但是一旦解释, 这很容易做到。我们的确定数字强的代码如下:
#include<stdio.h>
// Factorial function that returns the factorial of a given integer
// For more information about factorials: https://ourcodeworld.com/articles/read/857/how-to-get-the-factorial-of-a-number-in-c
int fact(int n){
int i, fac=1;
for(i=1;i<=n;++i){
fac*=i;
}
return fac;
}
int main(){
int number, lastDigit, sum, count;
sum = 0;
printf("Provide the number to determine:");
scanf("%d", &number);
count = number;
while(count != 0){
// Obtain the last digit of the number
lastDigit = count % 10;
// Keep the count of the sum of the factorial of the last digit
sum += fact(lastDigit);
// Divide the count to know when the loop should end
// e.g 145/10 = 14.5
// e.g 14.5/10 = 1.45
// e.g 1.45/10 = 0.145
// This means the loop of 145, will iterate 3 times (because 0.145/10 = 0.014499999999999999).
count = count / 10;
}
// If the sum is equal to the given number, it's strong !
if(sum == number){
printf("The number is Strong");
}else{
printf("The number is NOT strong");
}
return 0;
}
代码的工作方式如下:我们的程序将提示用户输入一个整数, 该整数将存储在number变量中。现在, 出于计算目的, 将数字的值分配给另一个我们称为count的变量。我们还定义了一个名为sum的变量, 它将包含给定数字的所有数字的阶乘之和, 该变量的初始值为0。
为了数学上找到数字的最后一位数字, 你可以通过取模运算符来执行此操作, 处理后的数字的其余部分将是最后一位数字, 我们将此值存储在lastDigit变量中。现在, 我们将创建一个循环, 该循环将做2件事, 直到count变量等于0为止:
- 找到最后一位的阶乘并将其加到总和中。
- 从我们不需要的号码中删除最后一位数字(更新计数值)
最后, 循环结束后, 你将能够比较数字是否强, 在代码开始时将sum变量与给定数字进行比较, 就是这样!
编码愉快!
评论前必须登录!
注册