相关疑难解决方法(0)

最优雅的方式来生成素数

实现此功能的最佳方式是什么:

ArrayList generatePrimes(int n)
Run Code Online (Sandbox Code Playgroud)

此函数生成第一个n素数(编辑:where n>1),因此generatePrimes(5)将返回ArrayListwith {2, 3, 5, 7, 11}.(我在C#中这样做,但我很高兴Java实现 - 或任何其他类似的语言(所以不是Haskell)).

我知道怎么写这个函数,但是当我昨晚做到这一点时,它并没有像我希望的那样结束.这是我想出的:

ArrayList generatePrimes(int toGenerate)
{
    ArrayList primes = new ArrayList();
    primes.Add(2);
    primes.Add(3);
    while (primes.Count < toGenerate)
    {
        int nextPrime = (int)(primes[primes.Count - 1]) + 2;
        while (true)
        {
            bool isPrime = true;
            foreach (int n in primes)
            {
                if (nextPrime % n == 0)
                {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime)
            {
                break;
            }
            else
            {
                nextPrime …
Run Code Online (Sandbox Code Playgroud)

c# java algorithm primes

81
推荐指数
7
解决办法
6万
查看次数

我如何进行"数百万次计算?"

我的代码粘贴在下面.当我运行这个程序时,它继续计算.我正在使用旧的Turbo C++编译器.这样的程序需要多长时间才能执行?我等了大约5分钟,但没有任何输出.

/*The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.

Find the sum of all the primes below two million.
*/
#include<stdio.h>
#include<conio.h>
#define TWO_MILLION 2*1000*1000
int IsPrime(long unsigned int num);
int main()
{
    long unsigned int i,sum=0;
    clrscr();
    for(i=2;i<TWO_MILLION;i++)
    {
        if(IsPrime(i))
        sum+=i;
    }
    gotoxy(25,25);
    printf("%ld",sum);
    getch();
    return 0;
}
int IsPrime(long unsigned int num)
{
    int flag=1;
    long unsigned int i;
    for(i=2;i<num;i++)
    {
        if(num%i==0)
        {
            flag=0;
            break;
        }
    }
    return …
Run Code Online (Sandbox Code Playgroud)

c turbo-c

5
推荐指数
1
解决办法
1084
查看次数

标签 统计

algorithm ×1

c ×1

c# ×1

java ×1

primes ×1

turbo-c ×1