PHP、111 68 66
$a=date(Y)+543;for($i=2;$i<$a;)$b+=$a%$i?!++$i:!!$a/=$i;echo$b==9;
素因数の数を直接数えます。
$a=date(Y)+543; // current year
for($i=2;$i<$a;) // while $i lower than the year
$b+=$a%$i?!++$i:!!$a/=$i; // if $i divides $a: $a/=$i and ++$b | if not: ++$i
echo$b==9; // output if it has 10 prime factors
古いアイデア:111 90
for($i=1;++$i<1e3;)for($j=1;++$j<1e3;)${$i*$j}=($$i?:1)+($$j?:1);echo${date('Y')+543}==10;
これは、素因数分解組み込みを使用しませんが、基本的には10000未満の数の素因数の数を取得するためのカウント素数シーブを使用します。これは、PHPが提供する4桁の年に対応しますdate('Y')
。
for($i=1;++$i<1e3;) // for each number smaller sqrt(1e4)
for($j=1;++$j<1e3;) // do sqrt(1e4) times
${$i*$j}=($$i?:1)+($$j?:1); // n_factors[i*j] = n_factors[i] + n_factors[j]
echo${date('Y')+543}==10; // output 1 if the current year has 10 prime factors or nothing if it doesn't