标签: primes

生成素数时“应用程序:不是程序”

我正在尝试输出前 100 个素数并不断收到错误消息:

应用程序:不是程序;期望一个可以应用于给定参数的过程:(#) arguments...:[none]

错误显示在我的 take$ 程序中:

(if (or (= m 0) (null? st))
      '()
      (cons (car st) (take$ (- m 1) ((cdr st)))))))
Run Code Online (Sandbox Code Playgroud)

这是我所有的代码:

(define int-builder$
    (lambda (x)
       (list x (lambda () (int-builder$ (+ 1 x ))))))

(define take$
    (lambda (m st)
       (if (or (= m 0) (null? st))
           '()
           (cons (car st) (take$ (- m 1) ((cdr st)))))))

(define filter-out-mults$
   (lambda (num  st)
     (cond
     (( = (remainder (car st) num) 0) 
         (filter-out-mults$ num ((cadr st))))
         (else 
            (list …
Run Code Online (Sandbox Code Playgroud)

scheme primes sieve lazy-sequences non-procedure-application

0
推荐指数
1
解决办法
487
查看次数

C 错误找到最大的质因数

#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <math.h>

bool isPrime(unsigned long long x) {
    if (x % 2 == 0)
        return false;
    for (unsigned long long i = 3; i < sqrt(x); x += 2) {
        if (x % i == 0)
            return false;
    }
    return true;
}

int main(int argc, char const *argv[]) {
    unsigned long long largest, number = 13195;

    for (unsigned long long i = 2; i < number; i++) {
        if (isPrime(i) && number % i …
Run Code Online (Sandbox Code Playgroud)

c primes

0
推荐指数
1
解决办法
112
查看次数

Java 中这个 PrimeNumbers 算法的时间复杂度

我是时间复杂度分析的新手...

如果有人能告诉我这是否是二次的,我将不胜感激。而且如果有更简单的方法可以使它成为o(1)。

public class PrimeNumbers {
    public boolean isPrime(int n) {
        boolean retValue = true;
        for (int i = 2; i < n; i++) {
            if (n % 2 == 0) {
                retValue = false;
            }
        }
        return retValue;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有人可以分解它为什么是这样,它肯定会帮助我学习。:)

非常感谢!

java complexity-theory big-o primes time-complexity

0
推荐指数
1
解决办法
979
查看次数

生成大素数列表的有效方法

我想弄清楚的是,当我为较小的数字运行此代码时,它返回列表就好了,但对于较大的数字(我会在我正在处理的上下文中称其为小。)例如 29996299,它会运行很长时间,我已经等了 45 分钟没有结果,最终不得不终止程序。我想知道是否有更有效的方法来处理超过 4 位或 5 位数字的数字。我已经测试了 range 函数的一些排列,看看是否有更好的方法来处理我想要生成的列表的限制,但似乎没有对计算所需的时间产生任何影响。我是 python 的新手,作为程序员并不是那么有经验。感谢您的时间。

在提交这篇文章之前再次运行程序,花了一个半小时左右。

该程序的功能是取用户选择的数字,用它来生成一个下界,找到下界和输入之间的所有素数并附加到列表中,然后生成第二个上界并找到所有素数,然后附加到列表中,到创建一个从初始数字向前和向后延伸的列表。该程序按我的预期工作,但没有我需要的那么快,因为我要处理的数字会很快变大,每个阶段几乎翻倍。

initial_num = input("Please enter a number. ") 

lower_1 = int(initial_num) - 1000
upper_1 = int(initial_num)
list_1 = []

for num in range(lower_1,upper_1):
   if num > 1:
       for i in range(2,num):
           if (num % i) == 0:
               break
       else:
           list_1.append(num)

lower_2 = list_1[-1]
upper_2 = list_1[-1] + 2000
list_2 = []

for num in range(lower_2,upper_2 +1):
   if num > 1:
       for i in range(2,num):
           if (num % …
Run Code Online (Sandbox Code Playgroud)

python math performance primes largenumber

0
推荐指数
1
解决办法
1421
查看次数

使用Haskell进行Prime测试的性能

我有两种测试素数的方法.其中一个叫isPrime,另一个叫isBigPrime.我最初想要的是用我已经计算过的"小"素数来测试"大"素数,这样测试变得更快.这是我的实现:

intSqrt :: Integer -> Integer
intSqrt n = round $ sqrt $ fromIntegral n

isPrime' :: Integer->Integer -> Bool
isPrime' 1 m = False
isPrime' n m = do
  if (m > (intSqrt n))
    then True
    else if (rem n (m+1) == 0)
         then False
         else do isPrime' n (m+1)

isPrime :: Integer -> Bool
isPrime 2 = True
isPrime 3 = True
isPrime n = isPrime' n 1
isBigPrime' :: Integer ->Int ->Bool
isBigPrime' …
Run Code Online (Sandbox Code Playgroud)

algorithm performance primes haskell

0
推荐指数
1
解决办法
57
查看次数

用 Python 测试一个数是否为质数的最快方法

我正在尝试使用 Python 快速确定一个数字是否为质数。

我有两个功能可以做到这一点。两者都返回 True 或 False。

函数 isPrime1 返回 False 的速度非常快,是一个数字不是素数。例如有一个大数字。但是对于大素数测试 True 的速度很慢。

函数 isPrime2 在为素数返回 True 时更快。但是如果一个数很大而且不是质数,那么返回一个值需要很长时间。第一个函数可以更好地工作。

我怎样才能想出一个解决方案,该解决方案可以快速为非质数的大数返回 False 并且可以快速处理质数的大数?

`

def isPrime1(number): #Works well with big numbers that are not prime
    state = True
    if number <= 0:
        state = False
        return state
    else:          
        for i in range(2,number):
            if number % i == 0:
                state = False
                break
        return state

def isPrime2(number): #Works well with big numbers that are prime   
    d = 2
    while d*d <= number: …
Run Code Online (Sandbox Code Playgroud)

python math primes

0
推荐指数
1
解决办法
2万
查看次数

试图找到第 10001 个质数,c#

我正在尝试“找到第 10001 个素数”作为欧拉项目挑战的一部分,但我不知道为什么我的代码不起作用。当我测试我的 isPrime() 函数时,它成功地找到了一个数字是否是素数,但我的程序返回 10200 作为第 10001 个素数。为什么是这样?

这是我的代码:

using System;
using System.Collections.Generic;

namespace Challenge_7
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Solution to Project Euler");
            Console.WriteLine("Challenge 7 - Find the 10001st prime");

            Console.WriteLine("\nProject Start:");

            List<int> primes = new List<int>();

            int number = 1;
            while (primes.Count != 10001)
            {
                if (isPrime(number))
                {
                    primes.Add(number);
                    Console.WriteLine(number);
                }

                number++;
            }

            Console.WriteLine("The 10001st prime is: {0}", primes[10000]);

            Console.ReadLine();
        }

        private static bool isPrime(int n)
        {
            bool prime = true;

            for (int …
Run Code Online (Sandbox Code Playgroud)

c# primes

0
推荐指数
1
解决办法
598
查看次数

筛分 O(n) 中的埃拉托色尼

我最近看到一篇文章,声称它可以使用高效的埃拉托色尼筛法在 O(n) 中找到所有小于 n 的素数。但是我无法看到它是如何 O(n)。

https://www.geeksforgeeks.org/sieve-eratosthenes-0n-time-complexity/

有人可以帮忙吗?

primes sieve

0
推荐指数
1
解决办法
305
查看次数

无法在索引 i 处更改向量的元素值

在 Stroustrup 的编程:使用 C++ 的原则和实践,第 4 章,练习 13 中,我必须编写一个程序来使用 Erathostenes 筛法查找给定范围内的所有素数。

到目前为止,我想出了这个:

vector<int> values;

void initialize_values()
{
    for (int i{0}; i < 100; ++i)
        values.push_back(1);
}


void remove_composites(vector<int> values)
{
    for(int i{2}; i * i < values.size(); ++i)
    {
        if (values[i] == 1)
        {
            for (int p{i + i}; p < values.size(); p += i)
                values[p] = 0; //not working
        }
    }
} 


int main()
{
    initialize_values();
    remove_composites(values);
    
    for (int i{2}; i < values.size(); ++i)
    {
        if (values[i] …
Run Code Online (Sandbox Code Playgroud)

c++ primes vector

0
推荐指数
1
解决办法
191
查看次数

使用Java中的列表方法找到边界之间的素数

public class PrimeNumbers {
    public static void main(String[] args) {
        System.out.println(getPrimeNumbers(3, 10));
    }

    public static List<Integer> getPrimeNumbers(int lowerBound, int upperBound) {
        List<Integer> numbers = new ArrayList<>();
        for (int i = lowerBound; i <= upperBound; i++) {
            for (int j = 2; j < upperBound; j++) {
                if (i % j == 0) {
                    break;
                } else {
                    numbers.add(i);
                }
            }
        }
        return numbers;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是到目前为止的代码,但质数不断重复,我需要帮助停止重复

java primes for-loop list arraylist

0
推荐指数
1
解决办法
164
查看次数