回答:
「キーワードなし」の制限はここでは重要ではありません。可能であれば、キーワードを追加しても改善されないだろうと確信しています。
n=2;main(m){n<720&&main(m<2?printf("%d ",n),n:n%m?m-1:n++);}
代替バージョン:
出力はそれほど良くありませんが、私はprintf悪用が好きです。
n=2;main(m){n<720&&main(m<2?printf("%*d",n,n):n%m?m-1:n++);}
両方のソリューションの秘trickは、2つのループ(再帰によって実装される)を1つにマージすることです。
n次の潜在的な素数、m次の潜在的な除数です。
各再帰呼び出しで、インクリメントn(m前の値に設定中)またはデクリメントしますm。
Pythonはこの挑戦のために作られたものではありません。したいprint?それは予約されています。さて、私たちはどのように使用しstdoutますか?まあ、それは費用がかかりimportます...あなたはそれを推測し、予約しました。まあ...私はUnix上にいるので、ファイル記述子1を開くことができます。これはたまたまstdoutです。ハック!
男と反復?何もありませんeval。もちろんループはありませんが、deforで関数を定義することもできませんlambda。そして、怪我にin辱を加えるために、リストの理解さえ使用することはできません!私はいつもmap(p.__mod__,...)コードゴルフのようなものを使う言い訳を探しています...理解は常により良いです。今までです。
p=1
eval(compile("p+=1;open('/dev/fd/1','w').write('%s '%p*all(map(p.__mod__,range(2,p))));"*720,'','exec'))
さて、あなたはそれが文句を言うかもしれませんexec(私もしませんでした私は、キーワードを使用していないにもかかわらず、キーワードです)。さて、これはを使用しない117文字のソリューションです。evalexec'exec'
p=2
s="eval('('+s*(p<720)+')',open('/dev/fd/1','w').write('%s '%p*all(map(p.__mod__,range(2,p)))),{'p':p+1})";eval(s)
__import__が、それはつもりコスト文字だ
#define q j*j<k?i%p[j++]||(i++,j=0):printf("%d\n",p[j=0,k++]=i++)
#define A q;q;q;q;q;q;q;q
#define B A;A;A;A;A;A;A;A
#define C B;B;B;B;B;B;B
main(){int i=2,j=0,k=0,p[999];C;C;C;C;C;}
さて、ここに簡単な最初の試みがあります。これは要件を満たす必要があると思います。私は単純な試行分割を使用して素数を見つけ、プリプロセッサを使用して構築された展開されたループを見つけて、十分な数になるまで繰り返します。繰り返しの数が調整され、正確に128個の素数が出力されるようになりました。
Mathematicaの「予約語」の解釈方法がわかりませんが、プレイしたいので、組み込み関数なしで素数を生成したり、素数性をテストしたりすることを意味します。
Fold[#2Cases[#/#2,1|_Rational]&,#,#]&@Range[2,719]