Écrivez le code le plus court pour trouver la somme des nombres premiers entre a
et b
(inclus).
Contribution
a
etb
peut être pris depuis la ligne de commande ou stdin (espace séparé)- Supposons
1 <= a <= b <=
10 8
Sortie Imprimez simplement la somme avec un caractère de nouvelle ligne.
Points bonus
- Si le programme accepte plusieurs plages (imprimez une somme sur chaque ligne), vous obtenez des points supplémentaires. :)
Réponses:
J,
413219 caractères:Mise à jour
(tamis simple)
par exemple
précédent
par exemple:
la source
Mathematica 7 (31 caractères en texte brut)
Si la solution PARI / GP le permet, alors:
la source
Range[a,b]~Select~PrimeQ//Tr
.C (117 dont NL)
la source
C # (294 caractères):
la source
int
slong
et enregistrer quelques caractères:long a=...,b=...,t=0,i=a;for(;i<=b;i++)
. Cela porte à 288 caractères. Vous pouvez également laisserp
revenir un long et simplement retourner l'un0
ou l' autren
et raccourcir la boucle àt+=p(i)
. 277 caractères, alors.PARI / GP (44 caractères)
la source
BASH Shell
47 personnages
Edit: Je viens de réaliser que la somme déborde et est contrainte comme un double.
5250 caractèresVoici une solution un peu plus longue, mais gère également les débordements
la source
$
).tr
ajoute un «+» à la fin, le corriger prendra plus de caractères.awk NF==2{print\$2}
enregistrer un octet sur la solution plus longue (nous ne rencontrerons pas accidentellement l'expansion d'accolade car il n'y a pas de virgule ou de..
s).C #, 183 caractères
Ce serait beaucoup plus court s'il ne fallait pas vérifier 1, ou s'il y avait une meilleure façon de ... Dans un format plus lisible:
la source
s -= i;
car c'est juste du sucre syntaxique pours = s - i;
lequel il essaie d'accéders
avant de le configurer)Haskell (80)
s 1 100 == 1060
la source
Ruby 1.9, 63 caractères
Utilisez comme ça
Utiliser la
Prime
classe ressemble à de la triche, mais comme les solutions Mathematica utilisaient des fonctions principales intégrées ...la source
Perl, 62 caractères
Celui-ci utilise l'expression rationnelle du nombre premier.
la source
Tâche normale (Python 3): 95 caractères
Tâche bonus (Python 3): 119 caractères
la source
Pari / GP (24 caractères)
Comme certaines autres solutions, cela ne répond pas strictement aux exigences,
a
etb
n'est pas lu depuis stdin ou la ligne de commande. Je pensais cependant que c'était une bonne alternative aux autres solutions Pari / GP et Mathematica.la source
Lisp commun: (107 caractères)
ne fonctionne que pour les points de départ> = 1
la source
APL (25 caractères)
Ceci est une modification d'un idiome bien connu (voir cette page pour une explication) pour générer une liste de nombres premiers en APL.
Exemple:
la source
Facteur -> 98
Sortie:
la source
R, 57 caractères
la source
n=2
nécessaire dansscan()
? Si l'entrée est standard, y a-t-il un problème à omettre l'argument et à supposer qu'un <enter> supplémentaire est requis?Japt , 7 octets
Essayez-le ici.
la source
fj<space>
pourrait être utile.Perl, 103 caractères
Il acceptera plusieurs lignes séparées par des espaces et donnera la réponse pour chacune: D
la source
En Q (95):
Exemple d'utilisation:
la source
C # 302
la source
Mathematica , 27
Prédéfini
a
etb
:En fonction (également 27):
la source
R (85 caractères)
x=scan(nmax=2);sum(sapply(x[1]:x[2],function(n)if(n==2||all(n %% 2:(n-1)))n else 0))
Extrêmement inefficace! Je suis sûr que cela prend du temps O (n ^ 2). Il pourrait donner des avertissements sur la contrainte d'un double à une logique.
Désobfusqué:
la source
Python 3.1 (153 caractères):
la source
from sys import*
2.r=True
->r=1
(et respectivement0
pourFalse
) 3.if i%j==0and i!=j:r=0
4.if r:p+=[i]
5.print(sum(p))
(remplace les 4 dernières lignes)input()
pour être plus court. Aussi, pouvez-vous utiliser à laif i%j<1and
place?GolfScript,
2724 octetsCeci est basé sur l' algorithme des nombres premiers de @ w0lf .
la source
05AB1E , 5 octets
Essayez-le en ligne!
la source
Python: 110 chars
la source
Python, 133
A little bit of sorcery:
la source
y+=1
and instead userange(y+1)
and([0]*-~y)[::i]
to save a byte (removing the newline). And using Python 3 will allow you to useinput()
, as long as you put parentheses afterprint
, therefore removing 4 bytes, but adding 1. Worth it.133 chars, Lua (no is_prime in-built function)
Here's an example where I added the line "print(i)" to display all primes found and the sum at the end of them: http://codepad.org/afUvYHnm.
la source
PowerShell - 94
la source
F# (141)
One third of the code is for parsing the input.
la source