Un nombre sphénique est un nombre qui est le produit d'exactement trois nombres premiers distincts. Les premiers nombres sphéniques le sont 30, 42, 66, 70, 78, 102, 105, 110, 114
. Il s'agit de la séquence A007304 dans l'OEIS.
Ta tâche:
Écrivez un programme ou une fonction pour déterminer si un entier entré est un nombre Sphenic.
Contribution:
Un entier compris entre 0 et 10 ^ 9, qui peut ou non être un nombre sphénique.
Sortie:
Une valeur de vérité / fausse indiquant si l'entrée est un nombre sphénique.
Exemples:
30 -> true
121 -> false
231 -> true
154 -> true
4 -> false
402 -> true
79 -> false
0 -> false
60 -> false
64 -> false
8 -> false
210 -> false
Notation:
C'est le code-golf , le code le plus court en octets gagne.
code-golf
number
decision-problem
primes
Gryphon - Rétablir Monica
la source
la source
60
un nombre sphénique?2 × 2 × 3 × 5
60
n'est pas un nombre sphénique. (en attente de clarification OP)Réponses:
Brachylog ,
63 octetsEssayez-le en ligne!
Explication
la source
≠
.Ṫ
aussi.Ṫ
n'est pas vraiment un prédicat intégré; c'est une variable intégrée: une liste de 3 éléments variables. C'est une variable précontrainte assez utile dans de nombreux défis différents.bash, 43 octets
Essayez-le en ligne!
Entrée via l'argument de ligne de commande, sorties
0
ou1
vers stdout.Assez explicite; analyse la sortie de
factor
pour vérifier que les premier et deuxième facteurs sont différents, les deuxième et troisième sont différents (ils sont triés, donc cela suffit), et il y a quatre champs (le numéro d'entrée et les trois facteurs).la source
MATL , 7 octets
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
la source
X=
est le bâti le plus triste que j'aie jamais vu.C,
8878126587773 + 4 (lm
) = 77 octetsExplication commentée non golfée:
Essayez-le en ligne!
la source
i*1.0/l
au lieu du plâtre de flotter. (Et puisquel
,j
ils sont globaux, ils sont initialisés à 0 gratuitement, vous n'avez pas besoin de le faire si la fonction n'est appelée qu'une seule fois. Je ne sais pas quelle est la règle pour cela.)CJam , 11 octets
Essayez-le en ligne!Ou vérifiez tous les cas de test .
Explication
Basé sur ma réponse MATL.
la source
Gelée , 8 octets
Essayez-le en ligne!
Utilise l'algorithme de Luis Mendo.
Explication:
la source
Husk , 6 octets
Essayez-le en ligne!
Renvoie 1 pour les nombres sphéniques et 0 sinon.
Explication
Dans le dernier passage, la congruence entre deux listes signifie avoir la même longueur et la même distribution de valeurs véridiques / fausses. Dans ce cas, nous vérifions que notre résultat est composé de deux valeurs véridiques (c'est-à-dire non nulles).
la source
Mathematica, 31 octets
la source
PrimeNu
fera aussi bienPrimeOmega
et est plus court.Gelée , 6 octets
Essayez-le en ligne!
Comment ça marche
la source
05AB1E ,
75 octetsEssayez-le en ligne!
Utilise l'algorithme de Dennis.
la source
En fait , 7 octets
Essayez-le en ligne!
Explication:
la source
Haskell , 59 octets
Essayez-le en ligne!
la source
J , 15 octets
Essayez-le en ligne!
Explication
la source
Dyalog APL, 26 octets
Essayez-le en ligne!
la source
Rubis,
814946 octetsComprend 6 octets pour les options de ligne de commande
-rprime
.Essayez-le en ligne!
la source
Python 3 ,
5453 octetsMerci à @xnor d'avoir joué au golf sur 1 octet!
Essayez-le en ligne!
la source
k*k%n
plutôt quen%k**2
C,
91102 octets, corrigé (encore), joué au golf et testé en temps réel:/ * Cela fonctionne également en 93 octets, mais puisque j'ai oublié les règles standard interdisant le type int par défaut sur les variables dynamiques, et que les valeurs de retour implicites ne sont pas autorisées sans affectations, je ne vais pas le prendre:
(Qui a dit que je savais quelque chose sur C? ;-)
Voici le cadre de test avec le script shell dans les commentaires:
J'ai emprunté la réponse précédente de betseg pour accéder à ma version.
Voici ma version de l'algorithme de betseg, sur laquelle j'ai joué pour arriver à ma solution:
la source
[betseg's answer](https://codegolf.stackexchange.com/a/135203/65836)
. Vous pouvez également cliquer sur modifier sa réponse pour lui suggérer une modification, si vous le souhaitez, qui comprendrait l'explication - aucune promesse quant à son approbation ou non.Pyth, 9 octets
Essayez-le ici.
la source
Javascript (ES6), 87 octets
Exemple d'extrait de code:
la source
Python 2 ,
135121 octetsEssayez-le en ligne!
la source
Python 2 , 59 octets
Essayez-le en ligne!
la source
J, 23 octets
Essayez-le en ligne!
Gérer 8 et 0 a ruiné celui-ci ...
q:
vous donne tous les facteurs premiers, mais ne gère pas 0. le reste dit simplement "les facteurs uniques doivent être égaux aux facteurs" et "le nombre d'entre eux doit être 3"la source
60
8
.(6=]#@,~.)@q:
comme solution possibleJapt , 14 octets
Essayez-le en ligne!
la source
Number.k()
, qui n'aurait aucun effet et vérifierait simplement si l'entrée a 3 facteurs premiers, pas 3 facteurs premiers distincts . Cela signifierait8
(avec trois facteurs premiers :)2, 2, 2
passerait bien qu'il ne soit pas dans A0073048
aux cas de test pour cette raison.Mathematica, 44 octets
Essayez-le en ligne!
la source
VB.NET (.NET 4.5), 104 octets
J'utilise la fonctionnalité de VB où le nom de la fonction est également une variable. À la fin de l'exécution, puisqu'il n'y a pas de déclaration de retour, elle transmettra à la place la valeur de la «fonction».
Le dernier
A=A=3
peut être penséreturn (A == 3)
dans les langages basés sur C.Commence à 2 et arrache les nombres premiers de manière itérative. Puisque je commence avec les plus petits nombres premiers, il ne peut pas être divisé par un nombre composite.
Va essayer une deuxième fois de diviser par le même nombre premier. Si c'est le cas (par exemple, comment 60 est divisé deux fois par 2), il définira le nombre de nombres premiers à 4 (au-dessus du maximum autorisé pour un nombre sphénique).
Essayez-le en ligne!
la source
Dyalog APL,
514948464543 octetsEssayez-le en ligne! (modifié pour pouvoir fonctionner sur TryAPL)
Je voulais en soumettre un qui ne repose pas sur l'espace de noms dfns que ce soit, même s'il est long .
la source
J,
151419 octetsTentative précédente:
3&(=#@~.@q:)~*
Version actuelle:
(*/*3=#)@~:@q: ::0:
Comment ça marche:
Cela passe pour les cas 0, 8 et 60, ce que la version précédente ne faisait pas.
la source
Mathematica,
6657 octetsDéfinit une fonction anonyme.
est Transpose .Explication
FactorInteger
donne une liste de paires de facteurs et de leurs exposants. Par exempleFactorInteger[2250]=={{2,1},{3,2},{5,3}}
. Ceci est transposé pour la facilité d'utilisation et alimenté la fonctionLength@#1==3&&And@@EqualTo[1]/@#2&
. La première partie,Length@#1==3
vérifie qu'il existe 3 facteurs uniques, tandis que la seconde,And@@EqualTo[1]/@#2
vérifie que tous les exposants sont 1.la source
PHP, 66 octets:
Exécuter en tant que pipe avec
-nR
ou l' essayer en ligne .Boucle infinie pour
0
; insérer$n&&
avant--$n
de fixer.panne
exemple d'
argument =
30
: lesfacteurs premiers sont
2
,3
et les5
autres diviseurs sont
1
, 2 * 3 =6
, 2 * 5 =10
et 3 * 5 =15
leur produit:
1*2*3*5*6*10*15
est27000
==30**3
la source
Python 99 octets
Première soumission. Pardonnez-moi si j'ai fait quelque chose de mal. Un peu idiot, compte le nombre de facteurs de
n
, puis le nombre de foisn
est divisible par chacun (en ajoutant 10 ** 9).Je suis presque sûr qu'il existe quelques moyens simples de couper environ 10 à 20 caractères, mais je ne l'ai pas fait.
De plus, cela est incroyablement lent à 10 ** 9. Pourrait être rendu correct en changeant
'...a+=1\n'*n
en'...a+=1\n'*n**.5
, car nous avons seulement besoin d'aller à la racine carrée den
.la source