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 true
e 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
, e7
sono illegali in lingue dove i numeri sono gettoni validi.Il numero
141
è illegale perché contiene41
, anche se1
e4
sono altrimenti validi.I caratteri
B
eD
(ob
ed
) 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;=CGIOSYaegkmq
sono 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 ...