As regras são simples:
- Os primeiros n primos (não primos abaixo de n ) devem ser impressos na saída padrão separados por novas linhas (os primos devem ser gerados dentro do código)
- números primos não podem ser gerados por uma função embutida ou através de uma biblioteca , ou seja, o uso de uma função embutida ou de biblioteca como, por exemplo, prime = get_nth_prime (n), is_a_prime (number) ou factorlist = list_all_factors (number) não será muito criativo.
Pontuação - digamos, definimos Pontuação = f ([número de caracteres no código]), O ( f (n)) sendo a complexidade do seu algoritmo em que n é o número de números primos encontrados. Portanto, por exemplo, se você tiver um código de 300 caracteres com complexidade O (n ^ 2), a pontuação é 300 ^ 2 = 90000 ; para 300 caracteres com O (n * ln (n)), a pontuação se torna 300 * 5,7 = 1711,13 ( vamos supor que todos os logs sejam logs naturais por simplicidade)
Use qualquer linguagem de programação existente, menor pontuação ganha
Edit: Problema foi alterado de encontrar 'primeiros 1000000 primos' para 'primeiros n primos' por causa de uma confusão sobre o que 'n' em O (f (n)) é, n é o número de primos que você encontra (encontrar primos é o problema aqui e, portanto, a complexidade do problema depende do número de números primos encontrados)
Nota: para esclarecer algumas confusões sobre complexidade, se 'n' é o número de números primos que você encontra e 'N' é o enésimo número primo encontrado, a complexidade em termos de n é e N não é equivalente, ou seja, O (f (n))! = O (f (N)) como, f (N)! = Constante * f (n) e N! = Constante * n, porque sabemos que a enésima função primordial não é linear, pensei desde que estávamos descobrindo 'n' a complexidade dos primos deve ser facilmente expressável em termos de 'n'.
Conforme indicado pelo Kibbee, você pode visitar este site para verificar suas soluções ( aqui está a lista antiga do Google Docs)
Inclua-os na sua solução -
qual a complexidade do seu programa (inclua análises básicas, se não triviais)
comprimento do caractere do código
a pontuação final calculada
Esta é minha primeira pergunta do CodeGolf, portanto, se houver um erro ou brecha nas regras acima, indique-as.
1[\p:i.78498
minha resposta para isso 1[\p:i.1000000
. Mesmo admitindo que o algoritmo privilegiada interna da J é O (n ^ 2) a minha pontuação seria ainda ser apenas 196.
n
é o número de primos ou o número máximo de primos, e todos ignoram o fato de que a adição de números no intervalo 0..n
é O(logn)
e a multiplicação e a divisão são ainda mais caras. Sugiro que você dê alguns exemplos de algoritmos, juntamente com a complexidade correta.
O-tilde(k^6)
. Isso leva à implicação de que qualquer pessoa que reivindique um tempo de execução melhor do que O-tilde(n ln n (ln(n ln n))^6)
tenha entendido mal parte do problema; e à questão de como as O-tilde
complexidades devem ser tratadas na pontuação.