根据这个问题,.Net字典将其分配的空间大小调整为至少是当前大小两倍的素数.为什么使用素数而不仅仅是当前大小的两倍是很重要的?(我试图用我的google-fu功能找到答案,但无济于事)
我想使用我在网上找到并稍微改变的算法生成两个非常大的素数.
我在第5行得到这个错误:
Python OverflowError: cannot fit 'long' into an index=sized integer
Run Code Online (Sandbox Code Playgroud)
我的代码:
import math
def atkin(end):
if end < 2: return []
lng = ((end/2)-1+end%2)
**sieve = [True]*(lng+1)**
for i in range(int(math.sqrt(end)) >> 1):
if not sieve[i]: continue
for j in range( (i*(i + 3) << 1) + 3, lng, (i << 1) + 3):
sieve[j] = False
primes = [2]
primes.extend([(i << 1) + 3 for i in range(lng) if sieve[i]])
return primes
Run Code Online (Sandbox Code Playgroud)
我该如何修复错误?
如果您知道生成大质数的更好方法,那么这也会有所帮助.
|---|---|---|---|---|
| 1 | 1 | 3 | 5 | 1 |
|---|---|---|---|---|
| 3 | 3 | 2 | 0 | 3 |
|---|---|---|---|---|
| 3 | 0 | 3 | 2 | 3 |
|---|---|---|---|---|
| 1 | 4 | 0 | 3 | 3 |
|---|---|---|---|---|
| 3 | 3 | 3 | 1 | 1 |
|---|---|---|---|---|
Run Code Online (Sandbox Code Playgroud)
(图1)
图1显示了一个正方形.每行,每列和两个对角线可以读作五位素数.从左到右读取行.列从上到下读取.两个对角线都是从左到右读取的.使用INPUT.TXT文件中的数据,编写构造此类方块的程序.
素数必须具有相同的数字总和(示例中为11).广场左上角的数字是预先确定的(示例中为1).
质数可以在同一方格中多次使用.
如果有多种解决方案,则必须提供所有解决方案.五位素数不能以零开头,即00003不是五位素数.
输入数据
11 1
我试图从IOI'94竞赛 - 问题3 - The Primes做一个问题.
我已经构建了大部分辅助函数......
我想在C#2005中创建一个程序来计算给定输入的素因子.我想使用基本和最简单的东西,不需要为它创建方法也不需要为数组等事物创建简单的模数.有没有任何代码满足我的愿望?
这是用于查找简单因子的代码,我需要修改此代码以计算素因子
class Program
{
static void Main(string[] args)
{
int a, b;
Console.WriteLine("Please enter your integer: ");
a = int.Parse(Console.ReadLine());
for (b = 1; b <= a; b++)
{
if (a % b == 0)
{
Console.WriteLine(b + " is a factor of " + a);
}
}
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud) 我刚刚实现了Miller-Rabin-Test和一个简单的函数来分解数字.两者都可以做得更好,至少Miller-Rabin-Test是众所周知的.
那么请你告诉我是否存在实现这种常见主要功能的Python库,或者为什么不存在这样的库?
我需要反过来找到第N个素数,即给定素数,我需要找到它的位置
2, 3, 5, 7...
Run Code Online (Sandbox Code Playgroud)
素数可以很大,按照的顺序10^7.此外,还有很多.
我有一个可以二进制搜索的预先计算的素数索引,但我也有50k的空间限制!可以筛选吗?或者任何其他快速方式?
编辑:非常感谢所有精彩的答案,我没想到他们!我希望他们对寻找同样的人有用.
我正在练习过去的基础java考试的考试试卷,我发现很难做一个for循环工作来测试一个数字是否是素数.我不想通过为更大的数字添加效率测量来使其复杂化,这只是至少适用于2位数字的东西.
目前,即使n是素数,它总是返回false.
我认为我的问题是我在for循环本身出错了,在哪里放"return true".并且"返回虚假;"......我确信这是我犯的一个非常基本的错误......
public boolean isPrime(int n) {
int i;
for (i = 2; i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
我无法在stackoverflow上找到其他帮助的原因是因为类似的问题要求更复杂的实现以获得更有效的方法.
所以我花了好几个小时试图弄清楚这段代码是如何生成素数的.
lazy val ps: Stream[Int] = 2 #:: Stream.from(3).filter(i =>
ps.takeWhile{j => j * j <= i}.forall{ k => i % k > 0});
Run Code Online (Sandbox Code Playgroud)
我已经使用了许多打印笔等,但没有让它更清晰.
这就是我认为代码的作用:
/**
* [2,3]
*
* takeWhile 2*2 <= 3
* takeWhile 2*2 <= 4 found match
* (4 % [2,3] > 1) return false.
* takeWhile 2*2 <= 5 found match
* (5 % [2,3] > 1) return true
* Add 5 to the list
* takeWhile 2*2 <= 6 found match
* (6 …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来找到最接近的素数.大于或小于,无关紧要,只是最接近(没有溢出,最好是.)至于速度,如果它可以在1GHz机器上大约50毫秒计算它(在软件中,在Linux内运行),我会欣喜若狂.
给定: set (),with .A = {a0, a1, ..., aN-1}1 ≤ N ≤ 1002 ≤ ai ≤ 500
问:找到所有A大小至少为2的子集的所有最小公倍数(LCM)的总和.
一组的LCM 被定义为最小整数,使得对于所有.B = {b0, b1, ..., bk-1}Bminbi | Bmin0 ≤ i < k
例:
让N = 3与A = {2, 6, 7},则:
LCM({2, 6}) = 6
LCM({2, 7}) = 14
LCM({6, 7}) = …Run Code Online (Sandbox Code Playgroud) algorithm primes computer-science dynamic-programming prime-factoring