改进此素数列表实施

时间:2018-11-14 09:57:10

标签: python math

以下代码列出了所有素数。

这是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');
      });
    }
}

1 个答案:

答案 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))

(编辑:设置有效的替换列表)