Я удивлен, что этот вызов еще не здесь, так как это так очевидно. (Или я удивлен, что не смог найти его, и кто-нибудь пометит его как дубликат.)
задача
Если задано неотрицательное целое число , вычислите сумму первых простых чисел и выведите ее.
Пример № 1
Для первые пять простых чисел:
- 2
- 3
- 5
- 7
- 11
Сумма этих чисел составляет , поэтому программа должна вывести .
Пример № 2
Для простые числа «первый ноль» равны нулю. И сумма без чисел - конечно - .
правила
- Вы можете использовать встроенные модули, например, чтобы проверить, является ли число простым.
- Это код-гольф , поэтому выигрывает наименьшее количество байтов на каждом языке!
Ответы:
6502 машинного кода , 75 байт
Ожидается указатель на некоторое временное хранилище в
$fb
/$fc
и количество простых чисел для суммирования$2
. Возвращает сумму вA
(реестр регистра).Никогда не проводил первичных проверок в машинном коде 6502, так что вот оно, наконец-то;)
Обратите внимание, что это начинает давать неправильные результаты для входов> = 14. Это из-за переполнения, код работает с «натуральным» диапазоном чисел 8-битной платформы, которая предназначена
0 - 255
для беззнаковых .Прокомментировал разборку
Пример C64 ассемблерной программы с использованием подпрограммы:
Онлайн демо
Код в синтаксисе ca65 :
источник
Python 2 , 49 байт
Использует теорему Уилсона (как я представил здесь xnor, я верю здесь )
Попробуйте онлайн!
Функция( n - 1 ) ! ≡ - 1 ( модн )
f
является рекурсивной, с начальным вводомn
и хвостом, когдаn
достигает нуля, что дает этот ноль (из-за логическогоand
);n
уменьшается каждый разt
, когда тестовое число, которое увеличивается с каждым вызовомf
, является простым. Тогда основной тест - это для которого мы отслеживаем квадрат факториала в.p
источник
Желе , 4 байта
Моя первая желейная программа
Попробуйте онлайн!
источник
ÆN€S
это также сделает.05AB1E , 3 байта
Попробуйте онлайн.
Объяснение:
источник
Java 8, 89 байт
Попробуйте онлайн.
Объяснение:
источник
Perl 6 , 31 байт
Попробуйте онлайн!
is-prime
Встроенная , к сожалению долго.источник
J , 8 байт
Попробуйте онлайн!
источник
Брахилог ,
87 байтПопробуйте онлайн!
Сохранено 1 байт благодаря @sundar.
объяснение
источник
~lṗᵐ≠≜+
кажется, работает, для 7 байтов (Также мне любопытно, почему он дает вывод 2 * input + 1, если выполняется без маркировки.)[2,+inf)
явно. Следовательно, он знает, что сумма 5 простых чисел (если входное значение равно 5), должна быть как минимум10
, и он частично знает, что, поскольку элементы должны быть разными, они не могут быть равны 2, поэтому это по крайней мере11
. TL; DR реализация неявной метки не достаточно сильна.Шелуха , 4 байта
Попробуйте онлайн!
Σ↑
источник
İ€
конечно.Атташе , 10 байт
Попробуйте онлайн!
хо гул
источник
Сетчатка , 41 байт
Попробуйте онлайн! Я хотел продолжать добавлять 1, пока не нашел
n
простые числа, но я не мог понять, как это сделать в Retina, поэтому я прибег к вложенному циклу. Объяснение:Начните с 1.
Цикл
n
раз.Сделайте копию предыдущего значения и увеличьте его.
Продолжайте увеличивать его, пока он составной. (
)
Закрывает внешний цикл.)Удалить оригинал
1
.Суммируйте и преобразуйте в десятичную.
источник
MATL , 4 байта
Попробуйте онлайн!
Объяснение:
источник
PHP, 66 байт
используя мою собственную простую функцию снова ...
Запустите как трубу с
-nr
или попробуйте онлайн .сломать
источник
for(;$argn;$i-1||$s+=$n+!$argn--)for($i=++$n;--$i&&$n%$i;);echo$s;
Haskell , 48 байтов
Попробуйте онлайн!
\p-> all((>0).mod p)[2..p-1]
True
источник
C (gcc) , 70 байт
Попробуйте онлайн!
источник
n=s
вместоreturn s
C, C ++, D:
147142 байта5-байтовая оптимизация для C и C ++:
-2 байта благодаря Zacharý
p
проверяет, является ли число простым,f
суммируетn
первые числаКод, используемый для проверки:
C / C ++:
D Оптимизированный ответ Zacharý ,
133131 байтУ D есть система шаблона гольфа
источник
T p(T)(T a){if(a<4)return 1;for(T i=2;i<a;)if(!(a%i++))return 0;return 1;}T f(T)(T n){T c,v=1;while(n)if(p(++v)){c+=v;--n;}return c;}
, Кроме того, C / C ++ / D может бытьint p(int a){if(a<4)return 1;for(int i=2;i<a;++i)if(!(a%i))return 0;return 1;}int f(int n){int c=0,v=1;while(n)if(p(++v)){c+=v;--n;}return c;}
(то же самое с оптимизацией C / C ++, просто настраивая алгоритм abit){c+=v;--n;}
бытьc+=v,--n;
?int
s):T p(T)(T a){T r=1,i=2;for(;i<a;)r=a%i++?r:0;return r;}T f(T)(T n){T c,v=1;while(n)if(p(++v))c+=v,--n;return c;}
a>3&i<a
вместоi<a
и удалитьif(a<4)...
Japt
-x
, 11 байтПопробуйте онлайн!
Сохранено несколько байтов благодаря новой языковой функции.
Объяснение:
источник
JavaScript (ES6), 55 байт
Попробуйте онлайн!
источник
Stax , 6 байт
Запустите и отладьте его
Объяснение:
источник
APL (Dyalog Unicode) , 7 + 9 = 16 байт
Попробуйте онлайн!
9 дополнительных байтов для импорта
pco
(и всех остальных) Dfn:⎕CY'dfns'
Как:
источник
import X
(новая строка)X.something()
в python считается с новой строки.Рубин, 22 + 7 = 29 байт
Беги с
ruby -rprime
(+7)источник
Пари / ГП , 20 байт
Попробуйте онлайн!
источник
JAEL , 5 байтов
Объяснение (генерируется автоматически):
источник
Python 2 ,
63595651 байтПопробуйте онлайн!
Добавлено:
Без библиотек:
Python 2 , 83 байта
Попробуйте онлайн!
источник
f=lambda n:n and prime(n)+f(n-1)
экономит пять (это может быть и дальше в гольф)Пайк , 4 байта
Попробуй это здесь!
источник
CJam , 21 байт
Попробуйте онлайн!
источник
F #, 111 байт
Попробуйте онлайн!
Seq.initInfinite
создает бесконечно длинную последовательность с функцией генератора, которая принимает в качестве параметра индекс элемента. В этом случае функция генератора - это просто функция тождестваid
.Seq.filter
выбирает только числа, созданные бесконечной последовательностью, которые являются простыми.Seq.take
занимает первыеn
элементы в этой последовательности.И, наконец,
Seq.sum
подводит их итоги.источник
cQuents , 3 байта
Попробуйте онлайн!
объяснение
источник
Z
вместоz
МОЙ , 4 байта
Попробуйте онлайн!
Все еще сожалея об отсутствии неявного ввода / вывода на этом языке мусора, иначе было бы два байта.
⎕
= входṀ
= 1-е ... пятое простое включительноΣ
= сумма↵
= выходисточник
APL (NARS), 27 символов, 54 байта
{¯2π⍵} здесь вернул бы n простых чисел, отличных от 2. Так что {⍵ = 1: 2⋄¯2π⍵-1} вернул бы n простых чисел 2 в нем ...
источник