是否可以使用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) 我遇到了这个问题.如果数字的总和,以及其数字的平方和是素数,则称为幸运数字.A和B之间的幸运数字是多少?1 <= A <= B <= 10 18.我试过这个.
这是实施:
#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) 在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想法.
如何在Haskell中实现素数列表,以便可以懒惰地检索它们?
我是Haskell的新手,想了解懒惰评估功能的实际用途.
我正在解决这个问题(问题一).声明是:
该集合中{1, 2, 3, ..., n}
有多少子集是互质的?如果每个元素的每两个都是互质的,则一组整数称为互质.如果它们的最大公约数等于1,则两个整数是互质的.
输入
第一行输入包含两个整数n
和m
(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}
.
我认为可以通过使用素数来解决.(跟踪我们是否使用了每个素数)..但我不确定.
我可以得到一些解决这个任务的提示吗?
这是我所知道的一个奇怪的问题,但我正在尝试获取文件中当前最大素数的副本.以整数形式获取数字非常简单.我跑了这个.
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,或者有更好的工具吗?
('1' * N) !~ /^1?$|^(11+?)\1+$/
Run Code Online (Sandbox Code Playgroud)
在网上,我发现这条适用于N> = 0的Ruby代码确定N是否为素数.从我所知道的,它看起来像玩正则表达式,但我不知道它是如何工作的.有人能告诉我它是如何工作的吗?
当我点击这段时,我正在阅读Eric Lippert 关于GetHashCode指南和规则的最新博客帖子:
我们在这里可能更聪明; 就像List在它满了时调整自身大小一样,bucket set也可以自行调整大小,以确保平均bucket长度保持低位.此外,由于技术原因,通常最好将存储桶设置长度设为素数,而不是100.我们可以对此哈希表进行大量改进.但是这个哈希表的简单实现的快速草图现在可以做到.我想保持简单.
所以看起来我错过了一些东西.为什么将它设置为素数是一个好习惯?
我正在学习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) 我想知道输出e is 65537 (0x10001)
意味着什么.它发生在使用RSA密钥生成期间openssl genrsa
.我知道点数表示该数字已通过探测器分区,并且在通过米勒拉宾测试后打印出正号.但我无法弄清楚RSA密钥打印出来之前的最后一条信息是什么意思.
我在openssl文档中找不到它.我可以在学期论文中使用它来处理素数.谢谢你的帮助!:)