Table des matières
Énoncé du problème
Exemple
Explication
Solution
Algorithme
Exemple : programme C++
Sortie
Analyse espace-temps
Conclusion
Maison développement back-end C++ Des chiffres nuisibles

Des chiffres nuisibles

Aug 26, 2023 am 11:17 AM
算法 数学 y compris la programmation Des chiffres nuisibles

Des chiffres nuisibles

Un nombre est considéré comme nuisible s'il s'agit d'un entier positif et que le nombre défini de chiffres dans son expansion binaire est un nombre premier. Le premier nombre nuisible est 3 car 3 = (11)2. On peut voir que la représentation binaire de 3 a un nombre fixe de chiffres de 2, qui est un nombre premier.

Les 10 principaux nombres nuisibles sont 3, 5, 6, 7, 9, 10, 11, 12, 13, 14. Il est intéressant de noter que les puissances de 2 ne peuvent jamais être des nombres nuisibles car elles n’ont toujours qu’un seul bit défini. 1 n'est pas un nombre premier. D'un autre côté, tous les nombres qui peuvent être exprimés par 2n + 1, où n est n'importe quel nombre naturel, seront toujours de mauvais nombres car ils auront 2 bits définis, et nous savons que 2 est un nombre premier.

En gardant à l'esprit les propriétés de ces numéros nuisibles, l'article suivant explique comment vérifier si un numéro est nuisible.

Énoncé du problème

Cette question vise à vérifier si le nombre n donné est un nombre nuisible, c'est-à-dire qu'il s'agit d'un nombre positif avec un nombre premier de bits définis dans son développement binaire.

Exemple

Input: 37
Copier après la connexion
Output: Pernicious
Copier après la connexion
Copier après la connexion
La traduction de

Explication

est :

Explication

37 = représentation binaire de 100101.

Définir le nombre de chiffres = 3

Puisque 3 est un nombre premier, 37 est un mauvais nombre.

Input: 22
Copier après la connexion
Output: Pernicious
Copier après la connexion
Copier après la connexion
La traduction de

Explication

est :

Explication

22 = représentation binaire de 10110.

Définissez le nombre de chiffres = 3.

Puisque 3 est un nombre premier, 22 est un nombre vicieux.

Input: 71
Copier après la connexion
Output: Not Pernicious
Copier après la connexion
Copier après la connexion
La traduction de

Explication

est :

Explication

La représentation binaire de 71 est 1000111.

Définissez le nombre de chiffres = 4.

Puisque 4 n'est pas un nombre premier, 71 n'est pas non plus un mauvais nombre.

Input: 64
Copier après la connexion
Output: Not Pernicious
Copier après la connexion
Copier après la connexion
La traduction de

Explication

est :

Explication

La représentation binaire de 64 est 1000000.

Définissez le nombre de chiffres = 1.

Puisque 64 = 26 c'est-à-dire que c'est une puissance de 2, il a 1 bit défini. Puisque 1 n’est pas un nombre premier, 64 n’est pas un nombre vicieux.

Solution

Nous devons savoir si le nombre de chiffres défini est un nombre premier afin de déterminer si un nombre est malveillant. La tâche principale à accomplir est de calculer le nombre défini de chiffres dans le développement binaire de ce nombre. La méthode suivante peut être utilisée pour calculer un nombre défini de chiffres, puis déterminer si le résultat est un nombre premier.

La méthode comprend les étapes suivantes -

  • Parcourez tous les bits d'un nombre à l'aide des opérateurs de boucle et de décalage à droite.

  • Si la valeur du bit est 1, le nombre de bits définis est augmenté de 1.

  • Vérifiez si la valeur finale du décompte est un nombre premier.

  • Afficher les réponses.

Algorithme

Fonction is_prime()

  • si (n < 2)< 2)

    • erreur de retour

  • pour (je de 2 à √a)

    • Si (a%i==0)

        erreur de retour

  • retour vrai

Fonction count_set_bits()

  • Initialiser le compteur = 0

  • quand (n > 0)

  • si ((n&1)>0)

  • compteur = compteur + 1

  • n = n >> 1

  • Compteur de retour

Fonction is_pernious()

  • Initialiser le compteur

  • Compteur = count_set_bits(n)

  • if (is_prime(counter) == true)

    • retour vrai

  • Autres

    • erreur de retour

Fonction principale()

  • Initialiser n

  • si (is_pernious())

    • cout <<"numéro nuisible"<<“Des chiffres nuisibles字”

  • Autres

    • cout << « Numéro non préjudiciable »

  • Impression

Exemple : programme C++

Le programme utilise la fonction

is_pernicious()

pour déterminer si un nombre est pernicieux. Il analyse les bits les moins significatifs à chaque itération de la boucle en décalant vers la droite la valeur de n à la fin de chaque itération dans la fonction

count_set_bits()

. Ensuite, il appelle la fonction

is_prime()

pour déterminer si le nombre de chiffres défini est un nombre premier.

#include <iostream>
using namespace std;
// this function counts the number of set bits by analyzing the rightmost bit using a while loop till n > 0.
// it performs logical & operation between 1 and n to determine if the rightmost bit is set or not.
// if it is set, count is incremented by 1
// right shift the value of n to make the bit left of the rightmost bit, the new rightmost bit.
int count_set_bits(int n){
   int count = 0;
   while (n > 0){
   
      // if the rightmost bit is 1: increment count
      if ((n & 1) > 0){
         count++;
      }
      
      // right shift the value of n to examine the next least significant bit
      n = n >> 1;
   }
   return count;
}

// this function determines if count of set bits in the given number is prime
bool is_prime(int count){
   if (count < 2)
   return false;
   for (int i = 2; i * i < count; i++){
      if (count % i == 0)
      return false;
   }
   return true;
}

// this functions states if count of set bits is prime -> pernicious
bool is_pernicious(int n){
   int count;
   count = count_set_bits(n);
   
   // if count is prime return true
   if (is_prime(count)){
      return true;
   }
   return false;
}

// main function
int main(){
   int n = 11;
   if (is_pernicious(n)){
      cout << n <<" is Pernicious Number";
   }
   else{
      cout << n << " is Non-Pernicious Number";
   }
   return 0;
}
Copier après la connexion

Sortie

11 is Pernicious Number
Copier après la connexion

Analyse espace-temps

Complexité temporelle : O(log(n) + sqrt(count)). Dans la fonction count_set_bits(), la boucle exécute log(n) fois pendant que nous analysons le nombre petit à petit. La fonction is_prime() prend un temps O(sqrt(count)) pour vérifier si count est premier. Les deux fonctions seront appelées une fois lors de l'exécution.

Complexité spatiale : O(1), puisqu'aucun espace auxiliaire n'est utilisé dans l'implémentation. Quelle que soit la taille du nombre saisi, l’algorithme utilise toujours une quantité d’espace constante.

Conclusion

Les mauvais nombres sont un concept mathématique intéressant et ils peuvent être identifiés facilement et efficacement en utilisant la méthode décrite ci-dessus. Cet article décrit également l'algorithme à utiliser, la solution du programme C++ et l'analyse de la complexité temporelle et spatiale.

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1662
14
Tutoriel PHP
1262
29
Tutoriel C#
1235
24
L'IA bouleverse la recherche mathématique ! Le lauréat de la médaille Fields et mathématicien sino-américain a dirigé 11 articles les mieux classés | Aimé par Terence Tao L'IA bouleverse la recherche mathématique ! Le lauréat de la médaille Fields et mathématicien sino-américain a dirigé 11 articles les mieux classés | Aimé par Terence Tao Apr 09, 2024 am 11:52 AM

L’IA change effectivement les mathématiques. Récemment, Tao Zhexuan, qui a prêté une attention particulière à cette question, a transmis le dernier numéro du « Bulletin de l'American Mathematical Society » (Bulletin de l'American Mathematical Society). En se concentrant sur le thème « Les machines changeront-elles les mathématiques ? », de nombreux mathématiciens ont exprimé leurs opinions. L'ensemble du processus a été plein d'étincelles, intense et passionnant. L'auteur dispose d'une équipe solide, comprenant Akshay Venkatesh, lauréat de la médaille Fields, le mathématicien chinois Zheng Lejun, l'informaticien de l'Université de New York Ernest Davis et de nombreux autres universitaires bien connus du secteur. Le monde de l’IA a radicalement changé. Vous savez, bon nombre de ces articles ont été soumis il y a un an.

CLIP-BEVFormer : superviser explicitement la structure BEVFormer pour améliorer les performances de détection à longue traîne CLIP-BEVFormer : superviser explicitement la structure BEVFormer pour améliorer les performances de détection à longue traîne Mar 26, 2024 pm 12:41 PM

Écrit ci-dessus et compréhension personnelle de l'auteur : À l'heure actuelle, dans l'ensemble du système de conduite autonome, le module de perception joue un rôle essentiel. Le véhicule autonome roulant sur la route ne peut obtenir des résultats de perception précis que via le module de perception en aval. dans le système de conduite autonome, prend des jugements et des décisions comportementales opportuns et corrects. Actuellement, les voitures dotées de fonctions de conduite autonome sont généralement équipées d'une variété de capteurs d'informations de données, notamment des capteurs de caméra à vision panoramique, des capteurs lidar et des capteurs radar à ondes millimétriques pour collecter des informations selon différentes modalités afin d'accomplir des tâches de perception précises. L'algorithme de perception BEV basé sur la vision pure est privilégié par l'industrie en raison de son faible coût matériel et de sa facilité de déploiement, et ses résultats peuvent être facilement appliqués à diverses tâches en aval.

Implémentation d'algorithmes d'apprentissage automatique en C++ : défis et solutions courants Implémentation d'algorithmes d'apprentissage automatique en C++ : défis et solutions courants Jun 03, 2024 pm 01:25 PM

Les défis courants rencontrés par les algorithmes d'apprentissage automatique en C++ incluent la gestion de la mémoire, le multithread, l'optimisation des performances et la maintenabilité. Les solutions incluent l'utilisation de pointeurs intelligents, de bibliothèques de threads modernes, d'instructions SIMD et de bibliothèques tierces, ainsi que le respect des directives de style de codage et l'utilisation d'outils d'automatisation. Des cas pratiques montrent comment utiliser la bibliothèque Eigen pour implémenter des algorithmes de régression linéaire, gérer efficacement la mémoire et utiliser des opérations matricielles hautes performances.

Explorez les principes sous-jacents et la sélection d'algorithmes de la fonction de tri C++ Explorez les principes sous-jacents et la sélection d'algorithmes de la fonction de tri C++ Apr 02, 2024 pm 05:36 PM

La couche inférieure de la fonction de tri C++ utilise le tri par fusion, sa complexité est O(nlogn) et propose différents choix d'algorithmes de tri, notamment le tri rapide, le tri par tas et le tri stable.

L'intelligence artificielle peut-elle prédire la criminalité ? Explorez les capacités de CrimeGPT L'intelligence artificielle peut-elle prédire la criminalité ? Explorez les capacités de CrimeGPT Mar 22, 2024 pm 10:10 PM

La convergence de l’intelligence artificielle (IA) et des forces de l’ordre ouvre de nouvelles possibilités en matière de prévention et de détection de la criminalité. Les capacités prédictives de l’intelligence artificielle sont largement utilisées dans des systèmes tels que CrimeGPT (Crime Prediction Technology) pour prédire les activités criminelles. Cet article explore le potentiel de l’intelligence artificielle dans la prédiction de la criminalité, ses applications actuelles, les défis auxquels elle est confrontée et les éventuelles implications éthiques de cette technologie. Intelligence artificielle et prédiction de la criminalité : les bases CrimeGPT utilise des algorithmes d'apprentissage automatique pour analyser de grands ensembles de données, identifiant des modèles qui peuvent prédire où et quand les crimes sont susceptibles de se produire. Ces ensembles de données comprennent des statistiques historiques sur la criminalité, des informations démographiques, des indicateurs économiques, des tendances météorologiques, etc. En identifiant les tendances qui pourraient échapper aux analystes humains, l'intelligence artificielle peut donner du pouvoir aux forces de l'ordre.

Algorithme de détection amélioré : pour la détection de cibles dans des images de télédétection optique haute résolution Algorithme de détection amélioré : pour la détection de cibles dans des images de télédétection optique haute résolution Jun 06, 2024 pm 12:33 PM

01Aperçu des perspectives Actuellement, il est difficile d'atteindre un équilibre approprié entre efficacité de détection et résultats de détection. Nous avons développé un algorithme YOLOv5 amélioré pour la détection de cibles dans des images de télédétection optique haute résolution, en utilisant des pyramides de caractéristiques multicouches, des stratégies de têtes de détection multiples et des modules d'attention hybrides pour améliorer l'effet du réseau de détection de cibles dans les images de télédétection optique. Selon l'ensemble de données SIMD, le mAP du nouvel algorithme est 2,2 % meilleur que YOLOv5 et 8,48 % meilleur que YOLOX, permettant ainsi d'obtenir un meilleur équilibre entre les résultats de détection et la vitesse. 02 Contexte et motivation Avec le développement rapide de la technologie de télédétection, les images de télédétection optique à haute résolution ont été utilisées pour décrire de nombreux objets à la surface de la Terre, notamment des avions, des voitures, des bâtiments, etc. Détection d'objets dans l'interprétation d'images de télédétection

Pratique et réflexion sur la plateforme multimodale de grands modèles Jiuzhang Yunji DataCanvas Pratique et réflexion sur la plateforme multimodale de grands modèles Jiuzhang Yunji DataCanvas Oct 20, 2023 am 08:45 AM

1. Le développement historique des grands modèles multimodaux. La photo ci-dessus est le premier atelier sur l'intelligence artificielle organisé au Dartmouth College aux États-Unis en 1956. Cette conférence est également considérée comme le coup d'envoi du développement de l'intelligence artificielle. pionniers de la logique symbolique (à l'exception du neurobiologiste Peter Milner au milieu du premier rang). Cependant, cette théorie de la logique symbolique n’a pas pu être réalisée avant longtemps et a même marqué le début du premier hiver de l’IA dans les années 1980 et 1990. Il a fallu attendre la récente mise en œuvre de grands modèles de langage pour découvrir que les réseaux de neurones portent réellement cette pensée logique. Les travaux du neurobiologiste Peter Milner ont inspiré le développement ultérieur des réseaux de neurones artificiels, et c'est pour cette raison qu'il a été invité à y participer. dans ce projet.

Application d'algorithmes dans la construction de 58 plateformes de portraits Application d'algorithmes dans la construction de 58 plateformes de portraits May 09, 2024 am 09:01 AM

1. Contexte de la construction de la plateforme 58 Portraits Tout d'abord, je voudrais partager avec vous le contexte de la construction de la plateforme 58 Portraits. 1. La pensée traditionnelle de la plate-forme de profilage traditionnelle ne suffit plus. La création d'une plate-forme de profilage des utilisateurs s'appuie sur des capacités de modélisation d'entrepôt de données pour intégrer les données de plusieurs secteurs d'activité afin de créer des portraits d'utilisateurs précis. Elle nécessite également l'exploration de données pour comprendre le comportement et les intérêts des utilisateurs. et besoins, et fournir des capacités côté algorithmes ; enfin, il doit également disposer de capacités de plate-forme de données pour stocker, interroger et partager efficacement les données de profil utilisateur et fournir des services de profil. La principale différence entre une plate-forme de profilage d'entreprise auto-construite et une plate-forme de profilage de middle-office est que la plate-forme de profilage auto-construite dessert un seul secteur d'activité et peut être personnalisée à la demande. La plate-forme de mid-office dessert plusieurs secteurs d'activité et est complexe ; modélisation et offre des fonctionnalités plus générales. 2.58 Portraits d'utilisateurs de l'arrière-plan de la construction du portrait sur la plate-forme médiane 58

See all articles