以下代码列出了所有素数。
这是Eratosthenes筛网的新实现吗?
如何提高代码数量,使代码运行更快?
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AlterForeignTable2 extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function($table) {
$table->foreign('user_parent_id')->references('id')->on('users');
$table->foreign('company_id')->references('id')->on('company');
});
Schema::table('otherstable', function($table) {
$table->foreign('user_id')->references('id')->on('users');
});
}
}
答案 0 :(得分:1)
可能有很多方法可以改善此问题,但最让我印象深刻的是-为什么要使用updateList和PrimeList,在每次迭代时都不断删除和复制它们。列表变长会花费更多时间。摆脱其中一个是我的第一个改变。
def PrimeSieve(curNum):
prime = True
addSet = set()
delSet = set()
for cp in PrimeSet:
daPrime, daSkip = cp
if curNum == daSkip:
prime = False
addSet.add((daPrime, daSkip + daPrime))
delSet.add(cp)
if prime:
addSet.add((curNum, 2 * curNum))
PrimeSet.difference_update(delSet)
PrimeSet.update(addSet)
return prime
PrimeSet = set()
for x in range(2, 11111):
print(x, PrimeSieve(x))
(编辑:设置有效的替换列表)