Di tutti gli anni in cui ho affrontato questa sfida, il 2017 è il primo anno ad essere un numero primo. Quindi la domanda riguarderà i numeri primi e le loro proprietà.
Il vostro compito è quello di produrre un programma o una funzione che avrà un numero arbitrariamente grande intero positivo come input e output o di ritorno se il numero è 2.017-friabile - cioè, se il più grande fattore primo in quel numero è 2017 o meno.
Alcuni esempi di input e loro output:
1 (has no prime factors)
true
2 (= 2)
true
80 (= 2 x 2 x 2 x 2 x 5)
true
2017 (= 2017)
true
2019 (= 3 x 673)
true
2027 (= 2027)
false
11111 (= 41 x 271)
true
45183 (= 3 x 15061)
false
102349 (= 13 x 7873)
false
999999 (= 3 x 3 x 3 x 7 x 11 x 13 x 37)
true
1234567 (= 127 x 9721)
false
4068289 (= 2017 x 2017)
true
Il tuo programma non deve produrre letteralmente truee false- qualsiasi valore di verità o falsità, e in effetti due diversi output che sono coerenti tra casi veri e falsi vanno bene.
Tuttavia, non è possibile utilizzare numeri primi nel codice sorgente. I primes sono di due tipi:
Personaggi, o sequenze di personaggi, che rappresentano letterali in numero primo.
I personaggi
2,3,5, e7sono illegali in lingue dove i numeri sono gettoni validi.Il numero
141è illegale perché contiene41, anche se1e4sono altrimenti validi.I caratteri
BeD(obed) sono illegali nelle lingue in cui vengono generalmente utilizzati come 11 e 13, come CJam o Befunge.
Caratteri che hanno valori Unicode con valori primi o che contengono byte con valori primi nella loro codifica.
I caratteri
%)+/5;=CGIOSYaegkmqsono illegali in ASCII, così come il carattere di ritorno a capo.Il personaggio
óè illegale in UTF-8 perché ha la sua codifica0xb3. Tuttavia, in ISO-8859-1, la sua codifica è semplicemente0xf3, che è composita e quindi va bene.
Vince il codice più breve per fare quanto sopra in qualsiasi lingua.
=regole esclude la maggior parte delle lingue standard ...