我的朋友给了我这段代码,我似乎找不到其中的错误。我附上了下面的代码:
import java.util.*;
public class prg {
public static void main(String[] args) {
int n;
int count;
int a=0,b=1;
int c=0;
Scanner kb=new Scanner(System.in);
n=kb.nextInt();
int ar[]=new int[100];
我在Coderbyte上做了以下挑战,它不会计算一些更大的数字,所以我假设我的函数很慢。在我的电脑上,计算第1000个质数需要0.045秒。
提示符是:
让函数PrimeMover(num)返回第n个质数。范围从1到10^4。例如:如果num为16,则输出应为53,因为53是第16个质数。
使用下面框中的参数测试功能使用不同的参数测试您的代码。
下面是我的代码:
def PrimeMover(num)
start = Time.now
return 2 if num == 1
return 3 if num == 2
return 5 if num == 3
count
/*This is a c program I made to print prime numbers between 0 and n,
the loop in this program runs once and terminates.*/
#include <stdio.h>
int main()
{
int n;
printf("Enter the value of n\n");
scanf("%d", &n);
int i, j;
for (i = 0; i <
这是我用Python语言编写的第一个代码,我完全不明白为什么第5个字符串中的代码必须包含math.sqrt(i))+1而不只是math.sqrt(i),因为否则会将素数平方添加到结果中。
如何解决这个问题是最简单、最自然的方法?提前感谢你们所有人
import math
n=int(input("Print n: "))
prime_list=list(range(2,n))
for i in range(2,n):
for j in range (2, math.ceil(math.sqrt(i))+1):
if i % j == 0:
我写了一个C++程序,打印所有小于n的质数,但程序在执行时总是崩溃。
#include <iostream>
using namespace std;
bool premier(int x) {
int i = 2;
while (i < x) {
if (x % i == 0)
return false;
i++;
}
return true;
}
int main() {
int n;
int i = 0;
cout << "entre
嗨,伙计们,我想知道这段代码是怎么回事:
def is_prime(n):
for i in range(2, int(n**.5 + 1)):
if n % i == 0:
return False
return True
能够在第2行检查质数:for i in range(2, int(n**.5 + 1)):范围不是:range(2, n)?它不应该遍历每个数字,直到n,但排除它吗?这个不是这样做的,但不知何故它起作用了……有没有人能解释一下它的工作原理。
有什么简单的方法可以让这个小程序更快吗?我已经完成了一个任务,它是正确的,但是太慢了。该程序的目的是打印第n对素数,其中两个素数之间的差是2,给定n。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
bool isPrime(int number) {
for (int i = 3; i <= number/2; i += 2) {
if (!(number%i)) {
return 0;
}
}
return 1;
}
int fin
在C++中,我想打印第一个n质数(本例中假设为n=1000)。
为了做到这一点,我从GMP库中找到了。
我假设你是这样使用它的
int n = 2;
for(int i = 0; i < 1000; i++) {
n = mpz_nextprime(n);
cout << n << endl;
}
但是由于mpz_nextprime有两个mpz_t参数,所以不能编译。
在这种情况下,如何使用mpz_nextprime?
我刚开始学习如何编程,我正在试着写一个程序来找出第n个质数。我做到了。但是,对于大的数字,需要很长的时间。有没有办法让它更快?下面是我使用的代码(它非常基础):
def prime_finder(nth1):
s = 1
n = 0
while n < nth1:
s += 1
for x in range(2,s):
if s % x == 0:
break
else:
n += 1
return s
print prime_finder(31337)
我正在学习我的第一门编程课程,我的作业是列出斐波那契数列中的第n个素数。到目前为止,我已经想出了这个:
num = int(input("Enter a number: "))
a = 1
b = 1
c = 0
count = 0
isPrime = True
while (count < num):
isPrime = True
c = a + b
for i in range(2,c):
if (c % i == 0):
isPrime = False
break
我正试图在xCode的Swift中找到第n个素数,但我似乎无法做到这一点,它只是给出了一个素数列表。
func nthPrimeNumber (n: Int) -> Int
{
var prime: Int
var divisor: Int
var isPrime: Bool
for (prime = 2; prime <= 50; ++prime )
{
isPrime = true;
for (divisor = 2; divisor < prime; ++divisor )
此应用程序将收到一个数字"n“。收到这个数字后,程序必须显示素数列表中的第n个素数。例如,如果用户输入"3",程序应该显示"5",因为5是从2开始的第三个质数。我知道我的代码有问题,但我不知道问题出在哪里以及如何修复它。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(s
我在我程序的质数部分遇到了问题。当我编译和运行我的程序时,质数对于第一个数字打印得很好,但是当系统提示输入另一个数字时。它通常要么不打印数字,要么从某一点开始截断质数。我是编程和这个论坛的新手,所以我对我的帖子中的任何格式问题感到抱歉。
#include <stdio.h>
#include <math.h>
int main(void)
{
int number, n=1;
long factorial=1;
int a=1, b=0,c;
int q=2, r=2, w=0;
int prime, count;
pr
因此,我一直在研究Bjarne编程中的一个问题:为我自己的利益使用C++的原则和实践,这个问题已经困扰了我几天。
我应该用第4章学到的工具来实现Eratosthenes算法的经典筛子(这并不多),这就是我到目前为止所掌握的:
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int main()
{
int p = 2;
int n = 0;
vector<int> nums{ 1, 1 };
cout &l
我现在是第一次学习c++,我已经写了一个cpp布尔函数来判断一个整数是不是质数。
代码是:
bool isPrime(int n) {
for (int i = 2; i < n; i++) {
if (n % i == 0)
return false;
else
return true;
}
}
然而,使用这个函数,9也被认为是一个质数。
我通过删除else语句找到了一个解决方案,
bool isPrime(int n) {
for (int i = 2; i < n; i
在我的C++书examples中,我使用了system ("pause")来保持屏幕打开,这是我从OS那里学到的,仅用于家庭作业。现在,我从我的书中得到了一个使用exit()的例子,根据真假的不同,我的屏幕会消失。如果我去掉exit(),程序会继续计算(这就是作者放入exit()的原因),但是如何解决这个问题呢?我正在使用微软VS桌面版的C++Express 2012。
//prime.cpp
// demonstrates IF statement with prime numbers
#include <iostream>
using namespace std
我需要打印从1到1,000,000的所有质数,并打印从4到10,000的所有偶数和两个质数的和。 我有一个sieve方法,它将数组中的所有非质数更改为0(这个问题特别要求这样做),我需要使用一个goldbach方法传递这个数组,并显示从4到10,000的所有偶数和两个质数之和。 问题的goldbach部分的要点是有效地打印数字,我非常确定我的解决方案使用多项式时间搜索,而正确的解决方案是通过线性时间搜索来完成的。有什么关于我如何优化这个的线索吗? import java.lang.Math;
public class sieveAndGoldbach {
public stati
大家好!所以我几乎完成了一个我在学校里开始研究的问题,这个问题是关于埃拉托色尼筛子的。我设法让程序打印出从2到1000的平方根的所有质数。然而,我的老师要求我使用素数假设(?)作者: C.F.高斯。他是这样说的: C. F.高斯假设(N)小于或等于N的素数的数量定义为(N) = N/loge(N),因为N接近无穷大。这就是素数假设。在for循环中,打印质数的计数器表示其序数(1、2、3等)。和(N)的值。
我试着做了另一个for循环,并打印质数,但对我来说就是不起作用!任何帮助都将不胜感激!:)
import math
def sieves(N):
x = 1000*[0]
我正在做项目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
最近,我试着在我的书中列出了100个不同的练习,这是目前的23个。找到第N个质数,虽然这看起来很容易,但我注意到搜索更大的数字需要很长时间(也就是50000已经花了大约47秒)。
#include <iostream>
#include <time.h>
using namespace std;
bool checkPrime(int n);
int main()
{
while (true)
{
register int number;
cin >> number;
r
所以我写了一个代码,在Project Euler上为我的学习过程找到最大的因素,它工作得很好,我得到了正确的答案。尽管我看到了不同的解决方案,但它们“更长”,看起来也更复杂。所以我的问题是,有没有我的代码没有处理的东西,比如说不同的数字,或者有没有更好的方法来完成这个任务?我正在尝试学习解决问题的不同方法,以便更好地编程,所以我想知道我是否应该用不同的方式来编写代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks
我正在做一个能找到n的程序。素数。例如,通过列出前六个素数:2, 3, 5, 7, 11和13,我们可以看到第6个素数是13。我正在尝试做一个算法,比如,如果我想看到第50个素数,我将把1添加到range()函数的末尾。我现在用这个算法来寻找素数;
cnt = 1
print (2)
for x in range(3,40,2):
div = False
for y in range(2,round(x**0.5)+1):
if x%y == 0:
div = True
if div == False:
print
我在Ruby on Rails中尝试如何找到质数。下面是我的代码:
helper : app/helpers/test_helper.rb
module TestHelper
def prime_number? number
index = 2
tmp = 0
while index <= number
if tmp < 1
if (number % i
我写了一个代码来得到第一个1000个质数回文,虽然我的逻辑是正确的,但我似乎没有得到第一个1000个质数回文,我得到了大约113个质数回文,在那之后我没有得到任何回文。我认为这是因为我的逻辑不够高效,这就是为什么它需要这么多时间来编译,但我已经尝试了三种不同的方法,每次运行时在第113个素回文数字之后都被卡住了。
谁能解释一下为什么我会遇到这个问题,是因为代码效率不高吗?
/* Program to find the first 1000 prime palindromes */
#include<stdio.h>
#include<math.h>
int pri
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
这个小的C脚本检查一个数字是否是质数...不幸的是,它不能完全工作。我知道脚本的低效(例如sqrt优化),这些不是问题所在。
#include <stdio.h>
int main() {
int n, m;
printf("Enter an integer, that will be checked:\n"); // Set 'n' from commandline
scanf("%d", &n); // Set 'n' from commandline
//n = 5; // To s
我的程序使用了大量的内存和处理能力,我只能搜索到6000,有什么方法可以减少使用的内存量?这将对未来的编程工作非常有帮助,因为知道如何巧妙地使用内存将是一件很好的事情。
ArrayList<Integer> factor = new ArrayList<Integer>();
ArrayList<Integer> non = new ArrayList<Integer>();
ArrayList<Integer> prime = new ArrayList<Integer>();
Scan
我正在计算素数,我已经做过了。但是我只想计算和打印第n个素数(用户输入),而计算其余的(它们不会被打印),只有第n个素数将被打印出来。
以下是我到目前为止所写的内容:
import java.util.Scanner;
/**
* Calculates the nth prime number
* @author {Zyst}
*/
public class Prime {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n,
谁能告诉我如何用C语言实现算法?我需要生成质数,但是我的算法很慢。
我的代码:
#include <stdio.h>
int prime(long int i)
{
long int j;
int state = 1;
for(j=2;j<i;j++)
{
if((i%j)==0){state=0;break;}
}
return state;
}
int main()
{
int t;
long int m,n,i;
scanf("%d", &t);
在来自的以下代码片段中:
private static long smallestFactor(long n) {
for (long i = 2, end = Library.sqrt(n); i <= end; i++) {
if (n % i == 0)
return i;
}
return n; // Prime
}
我对return n部分有点迷惑。在if语句中返回i之后,n会采用它的值吗?为什么?