我编写了一个简单的素数程序来检查一个数字是否是素数,我还编写了一个优化版本,它只在sieve_arr超过sieve_arr长度时才生成D2。
sieve.py
# sieve.py
from array import array
from math import sqrt
def sieve(n=80):
"""Sieve of Erathosthenes"""
sieve_arr = array('i', [True for _ in range(n+1)])
sieve_arr_length =
电子邮件筛选器只能激活一个脚本有什么原因吗?
> list
"mailinglists.sieve"
"spam.sieve" ACTIVE
> activate mailinglists.sieve
> list
"mailinglists.sieve" ACTIVE
"spam.sieve"
>
我看不出这其中的逻辑。我做错了什么吗?
我对SML很陌生。我试图创建一个函数,用Eratosthenes的筛子输出小于或等于给定整数n>2的所有素数的列表。但是,我遇到了一个问题,输出只显示为1,我希望能够有一个输入,例如5,并得到1,3,5作为结果。
到目前为止,这是我的代码,我是非常新的,所以我知道它很可能没有正确编写。
fun createList(ending) =
let
fun createListX(start, ending) =
if start = ending then []
else start :: createListX(start + 1, ending)
我正在尝试模仿筛子,使用Haskell找出小于某个数字的所有素数。我发现其他Haskell程序使用Sieve方法的速度很快。然而,我写的下面的递归函数非常慢。代码如下
sieve' :: Integer -> Integer -> [Integer]
sieve' n 1 = [2 .. n]
sieve' n (k + 1) | [x | x <- sieve' n k, x == k + 1] == [] = sieve' n k
|otherwise = [x | x <- sieve' n k, x
我试图在一定范围内打印出素数,并决定与Eratosthenes的分段筛子一起,找到从2到sqrt(n)的素数,并使用列表中找到的素数从任何范围打印出素数,这样范围内的数字不能被筛子列表中的任何一个数除以,最后是素数。
我的代码适用于小范围,如从2到10和3到5,但开始打印出副本和大n的非素数。有什么帮助吗?
from math import sqrt, ceil
#Creating segmented sieve
start=2
stop=1000000000
sieve=[i for i in range(2,ceil(sqrt(stop)+1))]
我用Python编写了一些代码来解决Project的问题10:“查找200万以下所有素数的总和”。我的代码可以工作,但不是最优的。显示输出需要很长时间。
当我试图处理素数低于20000的问题时,它是有效的。当我把它改为20万或200万,它没有显示输出,它只是计算,它需要很多时间,而我预计它会更快,因为计算并不太困难。我从来没有得到过输出。它似乎是一个无限的循环。有人知道问题出在哪里吗?
这是我的密码:
answer = 0
for number in range (2, 2000000):
if number > 1:
for i in range (2,
我正在用Haskell解决一些经典的问题来发展我的函数技能,我有一个问题来实现这个站点上建议的优化:
我对这个问题有三种解决方案,与第二种解决方案相比,第三种太慢了。有人能对我的代码提出一些改进建议吗?
我的实现是:
-- primeira implementação
primes n
| n < 2 = []
| n == 2 = [2]
| n `mod` 2 == 0 = primes'
| otherwise = if (find (\x -> n `mod` x == 0) primes') == Nothing then
我需要用Python实现,但由于它在大量代码中的部分,我希望尽可能简洁地实现它。虽然有很多更有效的方法来完成素数的查找,但我想看看Python能为我做些什么。
该程序需要要求用户输入,然后输出所有素数使用筛子从2到输入数字,包括在内。
到目前为止,我所能做的就是:
n = int(input("To what n do you wish to find primes? "))
sieve = list(range(2, n+1))
for i in range(len(sieve)):
for j in range(i+1, len(sieve)):
i
我在Haskell中实现了Eratosthenes算法的筛子。请看一下。如有任何建议,将不胜感激:)
import Data.List
-- a list identical with {seq} but for multiples of {p} which are replaced by {-1}
sieve_once :: [Integer] -> Integer -> [Integer]
sieve_once seq p = map (\x -> if x `mod` p == 0 then -1 else x) seq
-- a list of all prime
下面是一个示例:
;; Helper function for marking multiples of a number as 0
(def mark (fn [[x & xs] k m]
(if (= k m)
(cons 0 (mark xs 1 m))
(cons x (mark xs (inc k) m))
)))
;; Sieve of Eratosthenes
(defn sieve
[x & xs
这是我对计数半素数密码问题的解决方案,它对中小型输入是正确的,但会导致大测试用例的分割错误。
这通常发生在无效指针等情况下,但是我在这里看不到任何可能导致这种行为的东西。
你能发现代码有什么问题吗?
vector<int> solution(int N, vector<int> &P, vector<int> &Q) {
int M = P.size();
// Use sieve of eratosthenes to find prime numbers within range 0 to N
vector&l
我正在使用python多进程。使用池启动并发进程,使用RawArray在并发进程之间共享数组。我不需要同步RawArray的访问,也就是说,数组可以随时被任何进程修改。
RawArray的测试代码是:(不要在意程序的含义,因为它只是一个测试。)
from multiprocessing.sharedctypes import RawArray
import time
sieve = RawArray('i', (10 + 1)*[1]) # shared memory between processes
import multiprocessing as mp
de
给定m个从1到m的整数,对于每个1 i % x = 0 m,求出 i % y = 0 的最小素数x和最大数y,它是x的幂,使得i % y = 0。
我的主要方法是:我使用Eratos算法为每一个m查找x,如下所示:我使用set来更方便地跟踪
#include<bits/stdc++.h>
using namespace std;
set<int> s;
void Eratos() {
while(!s.empty()) {
int prime = *s.begin();
s.erase(prime);
X[prim
我正在写一个java程序,在windows中使用eclipse生成前5000万个素数(eratosthenes筛子)。
package first;
import java.util.Arrays;
public class primegen {
private static int[] generatePrimes(int max) {
boolean[] isComposite = new boolean[max + 1];
for (int i = 2; i * i <= max; i++) {
if (!isComposite [i]) {
我想得到一些关于算法性能的反馈。
class Sumprime
attr_accessor :number
def initialize(number)
self.number = number
prime_serie
end
def is_prime?(num)
counter = 2
root_num = Math.sqrt(num).ceil
while counter <= root_num
if num % coun
我在学习锈病的过程中,仍然有一些问题的借贷和所有权。我发现自己试图借用已经被借用为不可变引用的可变引用,等等.
我注意到,当我试图在不拥有素数的情况下迭代它们时,我会遇到一些问题,试图修改composites哈希映射。我可以通过调用向量上的to_owned来解决这个问题。这是处理这个问题的正确方法吗?
我还看到,当我构建代码时,我会收到关于warning: struct is never constructed: 'Sieve'和warning: method is never used: 'new'未使用的代码的警告,我是否不正确地构造它们?
use std:
所以我花了一整晚的时间来组装这个基于埃拉托色尼筛子的质数生成器。代码如下:
n = input("What number do you want to calculate to? ")
import time
start = time.time()
def pr(l):
ln = l+1
p = range(2, ln)
for k in p:
f = range(k, ln, k)
for f in f[1:]:
if f in p:
p.remove(f)
return p
print pr(n)
end
嗨,我有个任务,我不知道该怎么做。基本上,我需要写出素数,其中只有两个数的差,只有比另一个素数少两个或两个素数的素数,然后打印出每一对小于等于100的素数。这是它应该是什么样的。
3 5
5 7
11 13
17 . 19
29 31
41 43
59 61
71 73
这是我的代码,我不知道如何消除超过2的
for b in range(1, n):
if b>2:
for p in range(2, b):
if (b%p) ==0:
break
else: