問題タブ [sieve-of-atkin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - アトキンのふるいの私の素朴な実装が5を除外するのはなぜですか?
私は、ウィキペディアの非効率的ですが明確な擬似コードに基づいて、アトキンのふるいの非常に素朴な実装を作成しました。私は最初にMATLABでアルゴリズムを作成しましたが、素数として5を省略しています。私もPythonでアルゴリズムを作成し、同じ結果が得られました。
技術的には、 5が除外されている理由を知っています。x==1およびy==1の場合、n == 5であるステップではn = 4*x^2 + y^2
、これは1回だけ発生するため、5はプライムから非プライムに反転され、元に戻されることはありません。
私のアルゴリズムがウィキペディアのアルゴリズムと一致しないのはなぜですか?いくつかの表面的な調整を行いましたが(たとえば、各反復でx ^ 2を1回だけ計算する、最初の方程式で使用するときにmod(n、12)の値を保存するなど)、ロジックを変更しないでください。アルゴリズム。
アトキンのふるいに関連するいくつかの 議論 を読みましたが、どのような違いが私の実装で問題を引き起こしているのかわかりません。
Pythonコード:
MATLABコード
ウィキペディアの擬似コード
c++ - C ++アトキン実装のふるいにおける5の倍数
プロジェクト オイラーで、200 万未満のすべての素数の合計を見つける必要がある問題を解決しています。atkin のふるいを実装しようとしたところ、奇妙なことに 65,85 のような数値が素数として設定されます。コードとアルゴリズムを 1 日以上調べましたが、問題は見つかりませんでした。私はそれがばかげているに違いないと確信していますが、私はそれを見つけることができません。事前に感謝します私はビジュアルスタジオエクスプレス2012を使用しています.
コードは次のとおりです。
そして彼女のdata.txtにいくつかのエラーを指摘しました
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 65<----- 67 71 73 79 83 85<----- 89 91 97 101 103 107 109 113 127 131 137 139 143 145<---- 149 151 157 163 167 173 179 181 185<---- 191 199 199 199 205 211 221 223 227 229 233 239 241 247 257 259 263 265 269 271 277 281 283 293 299 305 307 311 313 317 331 337 347 349 353 359 365 367 373 403 407 409 419 421 427 431 433 439 443 445 449 457 461 463 467 479 481 485 487 491 493 499 503 505 509 511 521 523 533 541 545 547 557 559 563 565 569 571 577 587 593 599 601 607 611 613 617 619 629 631 641 643 647 653 659 661 671 673 677 679 683 685 689 691 697 701 703 709 719 727 733 739 871 877 881 883 887 901 905 907 911 919 923 929 937 941 947 949 953 965 967 971 977 983 985 991 997 1009 1013 1019 1021 1027 1031 1117 1123 1129 1145 1147 1151 1153 1157 1159 1163 1165 1171 1181 1187 1189 1193 1199 1201 1205 1213 1217 1223 1229 1231 1237 1241 1249 1259 1261 1267 1277 1279 1423 1427 1429 1433 1439 1447 1451 1453 1459 1465 1469 1471 1481 1483 1487 1489 1493 1499 1511 1513 1517 1523 1531 1537 1543 1549 1553 1559 1565 1567 1571 1579 1583 1585 1591 1597 1601 1603 1607 1609 1613 1619 1621 1627 1637 1649 1651 1657 1663 1667 1669 1679 1685 1687 1693 1697 1699 1703 1709 1717 1721 1723 1727 1733 1739 1741 1745 1747 1753 1759 1765 1769 1777 1781 1783 1787 1789 1801 1807 1811 1823 1831 1843 1847 1853 1861 1865 1867 1871 1873 1877 1879 1885 1889 1891 1901 1907 1913 1921 1931 1933 1937 1939 1945 1949 1951 1961 1963 1973 1979 1985 1987 1991 1993 1997 19993 1199 1201 1205 1213 1217 1223 1229 1231 1237 1241 1249 1259 1261 1267 1277 1279 1283 1285 1289 1291 1297 1301 1303 1307 1313 1319 1321 1327 1339 1345 1351 1361 1367 1373 1381 1385 1387 1391 1399 1403 1405 1409 1417 1423 1427 1429 1433 1439 1447 1451 1453 1459 1465 1469 1471 1481 1483 1487 1489 1493 1499 1511 1513 1517 1523 1531 1537 1543 1549 1553 1559 1565 1567 1571 1579 1583 1585 1591 1597 1601 1603 1607 1609 1613 1619 1621 1627 1637 1649 1651 1657 1663 1667 1669 1679 1685 1687 1693 1697 1699 1703 1709 1717 1721 1723 1727 1733 1739 1741 1745 1747 1753 1759 1765 1769 1777 1781 1783 1787 1789 1801 1807 1961 1963 1973 1979 1985 1987 1991 1993 1997 19993 1199 1201 1205 1213 1217 1223 1229 1231 1237 1241 1249 1259 1261 1267 1277 1279 1283 1285 1289 1291 1297 1301 1303 1307 1313 1319 1321 1327 1339 1345 1351 1361 1367 1373 1381 1385 1387 1391 1399 1403 1405 1409 1417 1423 1427 1429 1433 1439 1447 1451 1453 1459 1465 1469 1471 1481 1483 1487 1489 1493 1499 1511 1513 1517 1523 1531 1537 1543 1549 1553 1559 1565 1567 1571 1579 1583 1585 1591 1597 1601 1603 1607 1609 1613 1619 1621 1627 1637 1649 1651 1657 1663 1667 1669 1679 1685 1687 1693 1697 1699 1703 1709 1717 1721 1723 1727 1733 1739 1741 1745 1747 1753 1759 1765 1769 1777 1781 1783 1787 1789 1801 1807 1961 1963 1973 1979 1985 1987 1991 1993 1997 199961 1267 1277 1279 1283 1285 1289 1291 1297 1301 1303 1307 1313 1319 1321 1327 1339 1345 1351 1361 1367 1373 1381 1385 1387 1391 1399 1403 1405 1409 1417 1423 1427 1429 1433 1439 1447 1451 1453 1459 1465 1469 1471 1481 1483 1487 1489 1493 1499 1511 1513 1517 1523 1531 1537 1543 1549 1553 1559 1565 1567 1571 1579 1583 1585 1591 1597 1601 1603 1607 1609 1613 1619 1621 1627 1637 1649 1651 1657 1663 1667 1669 1679 1685 1687 1693 1697 1699 1703 1709 1717 1721 1723 1727 1733 1739 1741 1745 1747 1753 1759 1765 1769 1777 1781 1783 1787 1789 1801 1807 1811 1823 1831 1843 1847 1853 1861 1865 1867 1871 1873 1877 187961 1267 1277 1279 1283 1285 1289 1291 1297 1301 1303 1307 1313 1319 1321 1327 1339 1345 1351 1361 1367 1373 1381 1385 1387 1391 1399 1403 1405 1409 1417 1423 1427 1429 1433 1439 1447 1451 1453 1459 1465 1469 1471 1481 1483 1487 1489 1493 1499 1511 1513 1517 1523 1531 1537 1543 1549 1553 1559 1565 1567 1571 1579 1583 1585 1591 1597 1601 1603 1607 1609 1613 1619 1621 1627 1637 1649 1651 1657 1663 1667 1669 1679 1685 1687 1693 1697 1699 1703 1709 1717 1721 1723 1727 1733 1739 1741 1745 1747 1753 1759 1765 1769 1777 1781 1783 1787 1789 1801 1807 1811 1823 1831 1843 1847 1853 1861 1865 1867 1871 1873 1877 18791399 1403 1405 1409 1417 1423 1427 1429 1433 1439 1447 1451 1453 1459 1465 1469 1471 1481 1483 1487 1489 1493 1499 1511 1513 1517 1523 1531 1537 1543 1549 1553 1559 1565 1567 1571 1579 1583 1585 1591 1597 1601 1603 1607 1609 1613 1619 1621 1627 1637 1649 1651 1657 1663 1667 1669 1679 1685 1687 1693 1697 1699 1703 1709 1717 1721 1723 1727 1733 1739 1741 1745 1747 1753 1759 1765 1769 1777 1781 1783 1787 1789 1801 1807 1811 1823 1831 1843 1847 1853 1861 1865 1867 1871 1873 1877 1879 1885 1889 1891 1901 1907 1913 1921 1931 1933 1937 1939 1945 1949 1951 1961 1963 1973 1979 1985 1987 1991 1993 1997 19991399 1403 1405 1409 1417 1423 1427 1429 1433 1439 1447 1451 1453 1459 1465 1469 1471 1481 1483 1487 1489 1493 1499 1511 1513 1517 1523 1531 1537 1543 1549 1553 1559 1565 1567 1571 1579 1583 1585 1591 1597 1601 1603 1607 1609 1613 1619 1621 1627 1637 1649 1651 1657 1663 1667 1669 1679 1685 1687 1693 1697 1699 1703 1709 1717 1721 1723 1727 1733 1739 1741 1745 1747 1753 1759 1765 1769 1777 1781 1783 1787 1789 1801 1807 1811 1823 1831 1843 1847 1853 1861 1865 1867 1871 1873 1877 1879 1885 1889 1891 1901 1907 1913 1921 1931 1933 1937 1939 1945 1949 1951 1961 1963 1973 1979 1985 1987 1991 1993 1997 1999651 1657 1663 1667 1669 1679 1685 1687 1693 1697 1699 1703 1709 1717 1721 1723 1727 1733 1739 1741 1745 1747 1753 1759 1765 1769 1777 1781 1783 1787 1789 1801 1807 1811 1823 1831 1843 1847 1853 1861 1865 1867 1871 1873 1877 1879 1885 1889 1891 1901 1907 1913 1921 1931 1933 1937 1939 1945 1949 1951 1961 1963 1973 1979 1985 1987 1991 1993 1997 1999651 1657 1663 1667 1669 1679 1685 1687 1693 1697 1699 1703 1709 1717 1721 1723 1727 1733 1739 1741 1745 1747 1753 1759 1765 1769 1777 1781 1783 1787 1789 1801 1807 1811 1823 1831 1843 1847 1853 1861 1865 1867 1871 1873 1877 1879 1885 1889 1891 1901 1907 1913 1921 1931 1933 1937 1939 1945 1949 1951 1961 1963 1973 1979 1985 1987 1991 1993 1997 1999
c++ - 次のプログラムで C++ で SIGABRT を取得する
この問題を spoj に提出しましたが、これはruntime error(SIGABRT)
. 私のマシンと Ideone.com では正常に動作していますが、エラーが表示されます。何らかの理由?私はここに自分のコードを書いています: 私がやろうとしているのは、オーダー 10^8 の素数を計算し、それに対していくつかの操作を処理することです。ここに問題のリンクがあります: http://www.spoj.com/problems/CPRIME
python - 素数の数に比例するデータを含む素数ふるいの空間複雑度は?
空間または時間の複雑さに合わせて最適化されたアルゴリズムを書く練習をしています。素数ふるいでは、少なくとも、見つかったすべての素数のリストを保存する必要があります。見つかった素数の数に比例するデータは、そのようなアルゴリズムが使用するスペースの最小量であるようです。
- この根拠は有効ですか?
- このアルゴリズムのスペースの複雑さはどのように評価されますか?
ウィキペディアからアトキンのふるいについて- 素数の数がこれを超えると、ふるいが O(n^1/2) スペースをどのように使用できるかがわかりません。これが、少なくとも空間が素数の数に比例しなければならないように思われる理由です。可算数と空間の複雑さを混同していませんか?
Atkin のふるいに関するこの論文では、彼らのアルゴリズムは「N までの素数を出力します...ここでの「メモリ」には、プリンターで使用される紙は含まれません。」これはスペースの不公平な計算のようです。
- これがどのように測定されるべきか、実際に客観的に測定されているかを明確にしていただければ幸いです。
c++ - C++ - Atkin コード最適化のふるい分け
コードの実行速度を向上させるために何ができるかについて誰か提案があるかどうか疑問に思っていました. inclusiveSieve of Atkin
からすべての素数を含むベクトルを返す関数を作成しました[2, max]
。
これが私のコードです。
この関数を最適化するために何ができるかについて、いくつか質問があります。
sieve 配列をブール値の動的配列として初期化して、デフォルトですべて false になるようにしました。このように sieve を動的にする方が高速ですか、それとも通常の配列のままにしておく必要がありますか?
アルゴリズムが処理された後、for ループを使用してベクトルに素数を格納しています。ふるい内のすべての素数を見つけてベクトルに格納するより高速な方法はありますか?
他のヒント、トリック、ヒント、またはコードは大歓迎です。ありがとうございます。
c++ - エラトステネスの高度に因子化されたふるい
楽しみのために、C ++で高度に因数分解されたエラトステネスのふるいに対して、このStackOverflowの回答からの疑似コードを実装しようとしています。コードが素数と非素数の両方を返す理由がわかりません。これらの for ループを正しく実装していませんか? 代わりに while ループを使用する必要がありますか? for ループを適切にインクリメントしていないと思われます。どんな助けでも大歓迎です。私はその欠陥を突き止めようと数時間を費やしました。
GordonBGood の疑似コードがコメントとして挿入され、すべて同じ変数名を使用しました。