Maison  >  Article  >  développement back-end  >  Programme C pour vérifier les nombres forts

Programme C pour vérifier les nombres forts

WBOY
WBOYavant
2023-09-07 09:09:12954parcourir

Programme C pour vérifier les nombres forts

Étant donné un nombre 'n', nous devons vérifier si le nombre donné est un nombre fort.

Un nombre fort est celui où la somme des factorielles de tous ses nombres est égale au nombre 'n'. Factorielle est le résultat de la multiplication de tous les nombres inférieurs à ce nombre, y compris ce nombre, et est représenté par ! (point d'exclamation). Par exemple : 4 ! = 4x3x2x1 = 24.

Donc, pour déterminer si un nombre est fort, nous devons extraire chaque bit du nombre, par exemple si le nombre est 145 alors nous devons extraire 1, 4 et 5 puis nous calculerons la factorielle de chaque nombre qui est 1 ! = 1, 4 ! = 24,5 ! =120.

Maintenant, nous ajoutons 1 + 24 + 120 et nous obtenons 145, ce qui est exactement le même que l'entrée donnée, nous pouvons donc dire que ce nombre est fort.

Exemple

Input: n = 124
Output: No it is not a strong number
Explanation: 1! + 2! + 4! = 27 which is not equal to n i.e, 124
Input: n = 145
Output: Yes it is a strong number
Explanation: 1! + 4! + 5! = 145

La méthode utilisée ci-dessous est la suivante pour résoudre le problème

Nous allons −

  • prendre chaque nombre à partir d'un chiffre et trouver sa factorielle.
  • Nous additionnons les factorielles de ces nombres.
  • Comparez le résultat avec le nombre d'origine, s'ils sont égaux, le nombre est un nombre fort sinon le nombre n'est pas un nombre fort ;

Algorithme

START
In Function int factorial(int r)
   Step1 -> Initialize int fact and set as 1
   Step2-> Loop while r>1
      Set fact as fact * r
      Decremnet r by 1
   End Loop
   Step 3-> Return fact
   End Function factorial
In Function int check(int n)
   Step 1-> Initialize int temp, rem and result, set result as 0
   Step 2-> Set temp as n
   Step 3-> Loop while temp
      Set rem as temp % 10
      Set result as result + factorial(rem)
      Set temp as temp/10
   End loop
   Step 4-> If result == n then,
      Return 1
   Step 5-> Else
   Return 0
   End function check
In main(int argc, char const *argv[])
   Step 1-> Initialise and set n as 145
   Step 2->If check(n) is valid then,
      Print "Yes it is a strong number”
   Step 3-> Else
      Print "no it is not a strong number”
STOP

Exemple

Démonstration en direct

#include <stdio.h>
int factorial(int r) {
   int fact = 1;
   while(r>1) {
      fact = fact * r;
      r--;
   }
   return fact;
}
int check(int n) {
   int temp, rem, result = 0;
   temp = n;
   while(temp) {
      rem = temp % 10;
      result = result + factorial(rem);
      temp = temp/10;
   }
   if (result == n)
      return 1;
   else
      return 0;
}
int main(int argc, char const *argv[]) {
   int n = 145;
   if (check(n))
      printf("Yes it is a strong number</p><p>");
   else
      printf("no it is not a strong number</p><p>");
   return 0;
}

Si vous exécutez le code ci-dessus, la sortie suivante sera générée −

Yes it is a strong number

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer