我有一个非常大的数字,我想做一个程序,找到两个质数,如果相乘,就会得到原始数字。
Ex.
Original_number = 299
// The program should get these two numbers:
q = 13
p = 23
程序一开始运行得很好,但到了某个时刻,它就停止了,我不确定哪里出了问题。代码:
import time
import math
def main():
time1 = time.clock()
q = int(0)
p = int(0)
finalnumber = int(377)
print(
这是这个问题的后续问题:
以下是一位大师对这个问题的解决方案:
#include <cstdio>
#include <algorithm>
#include <functional>
using namespace std;
const int MAXN = 100100;
const int MAXP = 10001000;
int p[MAXP];
void init() {
for (int i = 2; i < MAXP; ++i) {
if (p[i] == 0) {
for (in
我有一个从1到n的整数。我将每个整数随机分配到三个集合中的一个-- A、B和C (A ∩ B = B ∩ C = C ∩ A = Ø)。每个整数都属于一个集合。所以我需要计算元素(a,b)的所有组合,使得a ∈ A, b ∈ B,而a,b的几何平均值属于C。基本上是sqrt(a*b) ∈ C。
我的解决方案是首先在大小为n的数组上标记每个元素是否进入了集合A、B或C,然后我循环遍历属于A的所有元素的数组。当我遇到一个元素时,我再次循环遍历属于B的所有元素。如果是array[sqrt(a*b)] == C,那么我添加(a, b, sqrt(a,b))作为一个可能的组合。然后,我对整个数组,也就是
假定除以所有(1,2,..,10)的第一个数是2520。给出除以所有(1,2,..,20)的第一个数为232792560。找到第一个数字除以所有(1,2,..,100)。(从1到100的所有连续数字)。答案应该在一分钟之内完成。
我正在用Java编写解决方案,我面临两个问题:
我如何计算--这就是解决方案本身是一个无法处理的庞大数字?我尝试使用"BigInteger“,我正在做许多添加和除法,我不知道这是否增加了我的时间复杂性。
我怎么能在不到一分钟内算出这个数字呢?到目前为止我想的解决方案还没有停止。
这是我的Java代码(使用大整数):
public sta
我想使用Python制作Diffie密钥交换代码,但我害怕只是随机选择g。
我读到了托马斯·波宁( Thomas )对这个问题的回答,如何计算Diffie-Hellman的原始根?说,如果你使用一个强素数,那么这个群体中的每一个数字(除了1和p-1)都会有一个p-1或\frac{p-1}{2}的顺序,但我在网上找不到可以使用的大强素数列表。有人知道我在哪里能找到吗?
编辑:感谢fgrieu的慷慨帮助,我意识到我正在寻找安全的素数,而不是强素数。
有没有人碰巧知道一个使用C#的BigInteger算法的Atkin筛子?据我所知,这是目前最著名的素因式分解算法。
我目前有以下职能:
/// <summary>
/// Finds prime numbers using the Sieve of Atkins algorithm.
/// </summary>
/// <param name="max">The limit of the prime list.</param>
/// <returns>
我一直在努力解决这个问题:
找到二项式系数的,C(n, m) = n! / (m! (n - m)!)模10^9 + 7,m <= n < 2 * 10^5。
我的一个想法是,首先,我们可以在线性时间内预先计算所有i从1到n的phi(i)值,也可以用Fermat的小定理计算从1到n模10^9 +7的所有逆数。在那之后,我们知道,一般来说,phi(m * n) = phi(m) * phi(n) * (d / fi(d)), d = gcd(m, n)。因为我们知道gcd((x - 1)!, x) = 1, if x is prime, 2 if x = 4, and x in al
我有一个C代码,找到下面的大的完美数,
#include <stdio.h>
int main ()
{
unsigned long long num,i,sum;
while (scanf ("%llu",&num) != EOF && num)
{
sum = 1;
for (i=2; i*i<=num; i++)
{
if (num % i == 0)
{
if (i*i =
实际上,给定N(可能很大)偶数,我想找到N=F*R,其中gcd(F,R) = 1,F>R,F尽可能小(因为我将完全分解F)。问题的核心是求最大因子R,其中R< sqrt(N)。
例如,N=36应该给出F=9和R=4,注意R不一定是素数,也不一定是素数。注意,我不是因子N,对F和R的唯一限制是它们是相对素数。
这是我快速而天真的版本,它正在起作用:
def factor_partial(N):
for R in xrange(int(math.sqrt(N)),1,-1):
if N%R == 0 and gcd(R,N/R) == 1:
我的输入是一个Integer。直到这个值,所有的质数都应该被找到并打印在5列中,然后我必须对整数进行“质数分解”并打印结果。
它工作得很好,但是它太慢了.
public class Bsp07 {
public static void main(String[] args) {
System.out.println("Enter the upper bound for prime number search");
int n = SavitchIn.readLineInt();
int[] aZahlen = new int[n - 1];
首先,我要澄清的是,我是编程新手,最近开始使用c++。我的数学课本上有一个与勒让德公式有关的问题,我想做一个与之相关的程序。它从用户n中取一个数字,并找出n的最高幂,n的最高幂除以n!
对于很多数字,它运行得很好,但对于其他一些数字,它运行得很好,而且它是完全随机的。这是代码中的一段代码。
#include <iostream>
#include <math.h>
using namespace std;
int prime(int);
int calc(int, int);
int main()
{
int n;
int hpf=2;
co
这是Project问题#5,这个语句找到了第一个n个自然数最不常见的倍数。例如,1,2的最不常见倍数。10是2520。
我承认我只是在尝试一些随机的东西,我没想到下面这些东西会起作用(用Python编写):
factors = int(input())
factorList = []
for i in range(2, factors+1):
factorList.append(i)
for i in range(len(factorList)-1):
for j in range(2*i+2, len(factorList), i+2):
fact
代码的编写是为了按升序将数字分解为素数。例如3!='2 * 3',4!='2^3 * 3‘。当我有诸如100这样的巨大数字时,运行时间就成了一个问题。我想要一个能在更短的时间内运行的代码。
from math import floor,sqrt,factorial
from decimal import Decimal
def prime(x):
if x==2 or x==3 or x==5:
return True
if (x%2==0) or (x%3==0) or (x%5==0) or (x==1):
return False
我试图创建一个数据库的3大洲(非洲,亚洲和欧洲),不同数量的国家从每个国家和不同数量的语言在每个国家使用。例如,
Continent-Country-Language
Africa - Egypt - Arabic
Africa - Egypt - English
Africa - Somalia - English
Asia - China - English
Asia - China - Mandarin
Asia - China - Cantonese
Asia - Japan - japanese
Asia - Iraq - Arabic
Europe - Germany - Germ