Напишите кратчайший код для нахождения суммы простых чисел между a
и b
(включительно).
вход
a
иb
может быть взят из командной строки или стандартного ввода (разделенных пробелами)- Предположим,
1 <= a <= b <=
10 8
Выходные данные Просто напечатайте сумму с символом новой строки.
Бонусные очки
- Если программа принимает несколько диапазонов (выведите одну сумму в каждой строке), вы получите дополнительные баллы. :)
Ответы:
J,
413219 символов:Обновить
(простое сито)
например
предыдущий
например:
источник
Mathematica 7 (31 символ в простом тексте)
Если разрешено решение PARI / GP, то:
источник
Range[a,b]~Select~PrimeQ//Tr
.C (117, включая NL)
источник
C # (294 символа):
источник
int
Slong
и сохранить несколько символов:long a=...,b=...,t=0,i=a;for(;i<=b;i++)
. Это получает до 288 символов. Вы также можете позволитьp
возвращать long и просто возвращать либо,0
либоn
сокращать цикл доt+=p(i)
. 277 символов, тогда.PARI / GP (44 символа)
источник
BASH Shell
47 персонажей
Редактировать: только что понял, что сумма переполняется и приводится в двойном размере.
5250 персонажейВот немного более длинное решение, но также справляется с переполнением
источник
$
).tr
добавляет в конце завершающий символ '+', исправление которого займет больше символов.awk NF==2{print\$2}
сохранение байта в более длинном решении (мы не будем случайно сталкиваться с расширением скобки, потому что нет запятых или..
s).C #, 183 символа
Это было бы намного короче, если бы не нужно было проверять 1 или был бы лучший способ ... В более читаемом формате:
источник
s -= i;
потому что это просто синтаксический сахар, кs = s - i;
которому пытается обратитьсяs
перед его настройкой)Хаскелл (80)
s 1 100 == 1060
источник
Ruby 1,9, 63 символа
Используйте как это
Использование
Prime
класса кажется обманом, но поскольку в решениях Mathematica используются встроенные простые функции ...источник
Perl, 62 символа
Этот использует регулярное выражение простого числа.
источник
Обычное задание (Python 3): 95 символов
Бонусное задание (Python 3): 119 символов
источник
Пари / ГП (24 символа)
Как и некоторые другие решения, это не совсем соответствует требованиям, так как
a
иb
не читается из стандартного ввода или командной строки. Однако я подумал, что это хорошая альтернатива другим решениям Pari / GP и Mathematica.источник
Common Lisp: (107 символов)
работает только для начальных точек> = 1
источник
APL (25 символов)
Это модификация хорошо известной идиомы (см. Эту страницу для объяснения) для генерации списка простых чисел в APL.
Пример:
источник
Фактор -> 98
Выход:
источник
R, 57 символов
источник
n=2
Нужно ли указывать вscan()
? Если вход является стандартным, есть ли проблема с пропуском аргумента и предположением, что требуется дополнительный <enter>?Japt , 7 байт
Попробуй это здесь.
источник
fj<space>
может быть полезен.Perl, 103 символа
Он примет несколько разделенных пробелом строк и даст ответ для каждой: D
источник
В Q (95):
Пример использования:
источник
C # 302
источник
Математика , 27
Предопределено
a
иb
:Как функция (также 27):
источник
R (85 символов)
x=scan(nmax=2);sum(sapply(x[1]:x[2],function(n)if(n==2||all(n %% 2:(n-1)))n else 0))
Крайне неэффективно! Я почти уверен, что это займет O (n ^ 2) времени. Это может дать предупреждение о принуждении двойного к логическому.
Deobfuscated:
источник
Python 3.1 (153 символа):
источник
from sys import*
2.r=True
->r=1
(и соответственно0
дляFalse
) 3.if i%j==0and i!=j:r=0
4.if r:p+=[i]
5.print(sum(p))
(заменяет последние 4 строки)input()
чтобы быть короче. Кроме того, вы можете использоватьif i%j<1and
вместо этого?GolfScript,
2724 байтаЭто основано на алгоритме простого числа @ w0lf .
источник
05AB1E , 5 байтов
Попробуйте онлайн!
источник
Питон: 110 символов
источник
Питон, 133
Немного колдовства:
источник
y+=1
и вместо этого использоватьrange(y+1)
и([0]*-~y)[::i]
для сохранения байта (удаление новой строки). А использование Python 3 позволит вам использоватьinput()
до тех пор, пока вы ставите круглые скобки послеprint
, поэтому удаляете 4 байта, но добавляете 1. Стоит того.133 символа, Lua (нет встроенной функции is_prime)
Вот пример, где я добавил строку «print (i)» для отображения всех найденных простых чисел и суммы в конце: http://codepad.org/afUvYHnm .
источник
PowerShell - 94
источник
F # (141)
Одна треть кода предназначена для анализа ввода.
источник