我在试着做一个素数列表。我已经对它进行了编码,但它只告诉我1 - 100的质数是1。我不确定为什么会发生这种情况。我也想为它做一个JFrame。
import javax.swing.JOptionPane;
public class ProgrammingAssignment7 {
public static void main(String[] args) {
//Scanner Scan = new Scanner (System.in);
//DECLARE VARIABLES
int x = 1;
int i
我正在做项目Euler #7,我写了:
public class Seven {
public static void main(String[] args) {
int i = 0;
int c = 1;
while (c <= 10001) {
if (squareRootIsPrime(i)) {
c++;
}
i++;
}
System.out.println(Math.sqr
我正在写一个打印给定长度的素数集的应用程序。这是一个一般长度的应用程序,例如从1到100的所有数字
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class Sieve
{
private int number;
public Sieve (int maxPrime)
{
number = maxPrime;
}
public Set<Integer> getPrimes()
{
我有一段检查给定数字是否为质数的代码:
If x Mod 2 = 0 Then
Return False
End If
For i = 3 To x / 2 + 1 Step 2
If x Mod i = 0 Then
Return False
End If
Next
Return True
我只对numbers 1E7 <= x <= 2E7使用它。然而,它非常慢-我几乎不能一秒检查300个号码,所以检查所有的x需要超过23天的时间……
有没有人能给我一些改进的建议,或者说一下我可能会以这种方式重复做些什么?
我是Ruby的新手,我认为这是通过解决Project Euler的问题来学习更多东西的一个很好的方法。
以下是我对问题5使用暴力的想法:
#What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?
end_point = 1_000_000_000
start_point = 2_520
(start_point..end_point).each do |number|
flag = true
(2..20).each do |divisor|
所以,我想找出600851475143的最大素因数。我有一个简单的方法可以找到当前最大的一个,它是这样的:
private static void findPrimeFactors(long num) {
ArrayList<Long> list = new ArrayList<Long>();
for (long i = 1; i <= num; i++) {
int lol = 0;
for (int a = 1; a < i; a++) {
public class Prime
{
public static void main(String args[]){
int i,m=0,flag=0;
int n=3;//it is the number to be checked
m=n/2;
if(n==0||n==1){
System.out.print(n+" is not prime number");
}
else
{
for(i=2;i<=m;i++)//Why are we using m here
为什么这个算法具有指数时间复杂度?
我知道"Modulus“是一个按位运算的运算符,对单个位进行运算。因此,在最坏的情况下,我们需要执行sqrt(2^n)除法。这是一种exp时间算法。
如果这是真的,那么所有的算法不会变成指数时间吗?请解释一下。
Find-Factor(X)
1: if X is even then
2: return ”2 is a factor”
3: end if
4: for i = 3 to Sqrt(X) by +2 do
5: test if X%i = 0, if yes, output ”i is a factor”
6: end for
7
我有在CodeEval上得到主回文问题的正确解决方案,但仍然得到以下错误:
TypeError: path must be a string
以下是我的解决方案:
var fs = require('fs');
fs.readFileSync(process.argv[2])
.toString()
.split('\n')
.forEach(isPrime)
function isPrime(input){
if (input === '') return;
if (input < 1001 ) {
va
我调试了我的代码,一切都很完美。但出于某种原因,我的代码从来不写到控制台。
这是我的代码:
long largest = 0;
for (long i = 1; i < 600851475144; i++)
{
long check = 0;
for (long j = 1; j < i + 1; j++)
{
if ((i%j) == 0)
{
check++;
这个程序生成质数。它工作得很好,但我想加快速度,因为它需要相当长的时间来生成所有的质数
#!/usr/bin/python
#intgr = int(raw_input ("Please enter your number: "))
intgr = 50000
for i in range (2, intgr+1):
j = 2
while j<i:
if (i%j) == 0:
break
j += 1
if j == i:
#print "prime",
isPrime::Integer->Bool
isPrime n=not (hasfactor n 2(div n 2))
hasfactor::Integer->Integer->Integer->Bool
hasfactor n low high
|low>high=False
|mod n low==0=True
|otherwise = hasfactor n (low+1) high
我理解大部分代码,除了第二行,not (hasfactor n 2(div n 2))。为什么更高的界限是(div n 2)?假设我们使用test
我想弄清楚这段代码的大O复杂度: prime_factorize(N) {
for (int i = 2; i <= N; i++) {
while (N % i == 0) {
print i
N = N / i
}
}
} 这实际上不是一种编程语言--它只是伪代码。 我知道伪代码在做什么。我也知道代码可以优化为只到sqrt(N),但我想在发布代码时弄清楚代码的运行时。 虽然很容易说运行时是二次的,但我非常确定这是错误的。我之所以认为它是错误的,是因为我知道质数筛分算法是在O(nloglogn)
//获取2到给定范围内的质数//当内部for循环运行2号时,它将9打印为质数。
import java.util.*;
import java.io.*;
class A
{
public static void main(String args[])
{
System.out.println("Enter the number till which the prime number is to be printed:");
Scanner sc = new Scanner(System.in);
int limit = sc.nextInt();
我已经开发了一个算法来寻找给定数字的因子。因此,它还有助于确定给定的数字是否为质数。我觉得这是寻找因子或质数的最快算法。
该算法确定给定的数字在5*N (其中N是输入数字)的时间范围内是否为质数。所以我希望我可以称之为线性时间算法。
如何验证这是否是可用的最快算法?在这件事上有人能帮上忙吗?(比GNFS和其他已知文件系统更快)
算法如下所示
Input: A Number (whose factors is to be found)
Output: The two factor of the Number. If the one of the factor found is 1 then it
我是一个java的初学者,不能理解"count“在这个程序中的用法。我必须在用户输入的某个范围内打印质数。
import java.util.Scanner;
public class JavaProgram
{
public static void main(String args[])
{
int start, end, i, j, count=0;
Scanner scan = new Scanner(System.in);
System.out.print("Enter the Range :\n&
我必须得到一个素数序列。但是我的代码不能工作。怎么可能修复它呢?
var num1 = parseInt(prompt('Enter a number'));
var num2 = parseInt(prompt('Enter a number'));
var num3 = 0;
function primeSeq(num1, num2) {
var b = 1;
var c = '';
if (num1 > num2) {
num3 = num2;
num2 = num1;
num1 = num3;
}
for (va
我想让我的程序找到数字600851475143的最大素因数。例如,13195的素数因子是5、7、13和29,其中29是最大的。虽然我的代码确实可以工作,但即使对于小得多的输入,例如6kk (大约需要15秒),答案也需要太长时间才能出现。对于12kk,它需要37秒,所以增量甚至比线性更差),它比我应该用作输入的数字小100k倍。下面是我的代码,任何关于提高代码效率的帮助都将不胜感激。
#include <stdio.h>
#include <math.h>
int main()
{
long long int number=600851475143;
i
我写了一个快速筛子来测试一个数字是否是质数。我有两个问题:
1)我测试了一个200位的质数,它错误地说它不是质数。我相信这是由于浮点错误(或类似的错误)。我如何才能使这一点更准确?
2)有没有更好的方式来写这篇文章?我使用了decimal来处理更大的数字。这是最好的方法吗?
import math
from decimal import *
def isprime(n):
i = 2
a = 1
if n == 1:
return 0
if n == 2 or n == 3:
return 1
while i < n
我有一系列随机数。这个范围实际上是由用户决定的,但它将是最多1000个整数。它们被放置在这个位置:
vector<int> n
值的插入方式如下:
srand(1);
for (i = 0; i < n; i++)
v[i] = rand() % n;
我正在创建一个单独的函数来查找所有非质数的值。这是我现在所拥有的,但我知道这是完全错误的,因为我在这个系列中同时得到了质数和复合数。
void sieve(vector<int> v, int n)
{
int i,j;
for(i = 2; i <= n; i++)
{