标签: primes

用Func递归

是否可以使用Func委托进行递归?我有以下,不编译,因为Func的名称不在范围内...

Func<long, long, List<long>, IEnumerable<long>> GeneratePrimesRecursively = (number, upperBound, primeFactors) => 
{
    if (upperBound < number)
    {
        return primeFactors;
    }
    else
    {
        if (!primeFactors.Any(factor => number % factor == 0)) primeFactors.Add(number);
        return GeneratePrimesRecursively(++number, upperBound, primeFactors); // breaks here.
    }
};
Run Code Online (Sandbox Code Playgroud)

c# recursion primes

27
推荐指数
1
解决办法
4699
查看次数

寻找幸运数字的算法

我遇到了这个问题.如果数字的总和,以及其数字的平方和是素数,则称为幸运数字.A和B之间的幸运数字是多少?1 <= A <= B <= 10 18.我试过这个.

  • 首先,我生成了1之间所有可能的素数和可以通过求和平方得到的数字(81*18 = 1458).

  • 我在A和B中读到了通过对数字求和可以产生的最大数量.如果B是2位数字(最大数字是由99生成的18).

  • 对于1和最大数之间的每个素数.我应用了整数分区算法.

  • 对于每个可能的分区,我检查了它们的数字的平方和是否形成素数.如果是这样,则生成该分区的可能排列,如果它们位于范围内,则它们是幸运数字.

这是实施:

#include<stdio.h>
#include<malloc.h>
#include<math.h>
#include <stdlib.h>
#include<string.h>
long long luckynumbers;
int primelist[1500];

int checklucky(long long possible,long long a,long long b){
    int prime =0;
    while(possible>0){
            prime+=pow((possible%10),(float)2);
            possible/=10;
    }
        if(primelist[prime]) return 1;
        else return 0;
}
long long getmax(int numdigits){
        if(numdigits == 0) return 1; 
        long long maxnum =10;
             while(numdigits>1){
                        maxnum = maxnum *10;
                        numdigits-=1;
             }
         return maxnum; 

}
void permuteandcheck(char *topermute,int d,long long a,long long b,int …
Run Code Online (Sandbox Code Playgroud)

c algorithm primes

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

当生产功能可以有数百万个测试用例时,TDD如何工作?

在TDD中,您选择一个测试用例并实现该测试用例然后您编写足够的生产代码以便测试通过,重构代码并再次选择一个新的测试用例并继续循环.

我在这个过程中遇到的问题是TDD说你只编写了足够的代码来传递你刚写的测试.我所指的确切地说,如果一个方法可以有100万个测试用例,你能做什么?!显然没有写100万个测试用例?!

让我通过下面的例子更清楚地解释一下我的意思:

 internal static List<long> GetPrimeFactors(ulong number)
        {
            var result = new List<ulong>();

            while (number % 2 == 0)
            {
                result.Add(2);
                number = number / 2;
            }

            var divisor = 3;

            while (divisor <= number)
            {
                if (number % divisor == 0)
                {
                    result.Add(divisor);
                    number = number / divisor;
                }
                else
                {
                    divisor += 2;
                }
            }

            return result;
        }
Run Code Online (Sandbox Code Playgroud)

上面的代码返回给定数字的所有素数因子.ulong有64位,这意味着它可以接受0到18,446,744,073,709,551,615之间的值!

那么,当生产功能可以有数百万个测试用例时,TDD如何工作?!

我的意思是有多少测试用例可以编写,所以我可以说我使用TDD来实现这个生产代码?

TDD中的这个概念说你应该只编写足够的代码来通过测试,这对我来说似乎是错误的,如上面的例子所示?

什么时候足够了?

我自己的想法是,我只挑选一些测试用例,例如高频段,低频段和更多例如5个测试用例,但这不是TDD,是吗?

非常感谢您对此示例的TDD想法.

c# asp.net algorithm tdd primes

26
推荐指数
4
解决办法
2198
查看次数

素数的懒惰列表

如何在Haskell中实现素数列表,以便可以懒惰地检索它们?

我是Haskell的新手,想了解懒惰评估功能的实际用途.

primes haskell list lazy-evaluation

25
推荐指数
4
解决办法
2万
查看次数

如何计算集合{1,2,3,..,n}的互质子集数量

我正在解决这个问题(问题一).声明是:

该集合中{1, 2, 3, ..., n}有多少子集是互质的?如果每个元素的每两个都是互质的,则一组整数称为互质.如果它们的最大公约数等于1,则两个整数是互质的.

输入

第一行输入包含两个整数nm(1 <= n <= 3000, 1 <= m <= 10^9 + 9)

产量

输出{1, 2, 3, ..., n}模数的互质子集的数量m.

输入:4 7输出:5

有12点质数的子集{1,2,3,4}:{},{1},{2},{3},{4},{1,2},{1,3},{1,4},{2,3},{3,4},{1,2,3},{1,3,4}.


我认为可以通过使用素数来解决.(跟踪我们是否使用了每个素数)..但我不确定.

我可以得到一些解决这个任务的提示吗?

algorithm primes integer

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

如何在合理的时间内将绝对大量的数字转换为字符串?

这是我所知道的一个奇怪的问题,但我正在尝试获取文件中当前最大素数的副本.以整数形式获取数字非常简单.我跑了这个.

prime = 2**74207281 - 1
Run Code Online (Sandbox Code Playgroud)

它需要大约半秒钟,它工作得很好.操作也相当快.将它除以10(不带小数)来移动数字很快.但是,str(prime)需要很长时间.我str像这样重新实现,发现它每秒处理大约一百个数字.

while prime > 0:
    strprime += str(prime%10)
    prime //= 10
Run Code Online (Sandbox Code Playgroud)

有没有办法更有效地做到这一点?我在Python中这样做.我是否应该尝试使用Python,或者有更好的工具吗?

python string primes biginteger

25
推荐指数
3
解决办法
3156
查看次数

Ruby isPrime方法

('1' * N) !~ /^1?$|^(11+?)\1+$/
Run Code Online (Sandbox Code Playgroud)

在网上,我发现这条适用于N> = 0的Ruby代码确定N是否为素数.从我所知道的,它看起来像玩正则表达式,但我不知道它是如何工作的.有人能告诉我它是如何工作的吗?

ruby regex primes

24
推荐指数
2
解决办法
5786
查看次数

为什么将HashTable的长度设置为素数是一个好习惯?

当我点击这段时,我正在阅读Eric Lippert 关于GetHashCode指南和规则的最新博客帖子:

我们在这里可能更聪明; 就像List在它满了时调整自身大小一样,bucket set也可以自行调整大小,以确保平均bucket长度保持低位.此外,由于技术原因,通常最好将存储桶设置长度设为素数,而不是100.我们可以对此哈希表进行大量改进.但是这个哈希表的简单实现的快速草图现在可以做到.我想保持简单.

所以看起来我错过了一些东西.为什么将它设置为素数是一个好习惯?

c# arrays primes hashcode

24
推荐指数
3
解决办法
8453
查看次数

如何生成前n个素数?

我正在学习Ruby并做一些数学的东西.我想做的其中一件事是生成素数.

我想生成前十个素数和前十个素数.我测试一个数字是否有素数是没有问题的,但是想知道生成这些数字的最佳方法是什么?

我使用以下方法来确定数字是否为素数:

class Integer < Numeric
  def is_prime?
    return false if self <= 1
    2.upto(Math.sqrt(self).to_i) do |x|
      return false if self%x == 0
    end
    true
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby primes

24
推荐指数
5
解决办法
3万
查看次数

"e是65537(0x10001)"是什么意思?

我想知道输出e is 65537 (0x10001)意味着什么.它发生在使用RSA密钥生成期间openssl genrsa.我知道点数表示该数字已通过探测器分区,并且在通过米勒拉宾测试后打印出正号.但我无法弄清楚RSA密钥打印出来之前的最后一条信息是什么意思.

我在openssl文档中找不到它.我可以在学期论文中使用它来处理素数.谢谢你的帮助!:)

primes openssl

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