用a到b的eratosthenes筛子找到素数 [英] Find prime numbers with sieve of eratosthenes from a to b

查看:78
本文介绍了用a到b的eratosthenes筛子找到素数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好

i希望在[a,b]持续时间内找到素数。

请指导我

非常感谢。



hello
i want to find prime numbers in [a,b] duration.
Please guide me
thanks lot.

i want to find prime numbers in [a,b] duration.





我的尝试:



i want to find prime numbers in [a,b] duration.





此代码在[0中找到主要数字topcandidate]





this code find prime numbrs in [0 , topcandidate]

int FindPrimeUsingSieveOfEratosthenes(int topCandidate = 1000000)
{
	int totalCount = 0;
	bool *ix = (bool*)(malloc(topCandidate * sizeof(bool)));

	for(int i = 2 ; i <= topCandidate ; i++)
	ix[i] = true;
	ix[0] = ix[1] = false;

	/* Mark all the non-primes */
	int thisFactor = 2;
	int lastSquare = 0;
	int thisSquare = 0;

	while (thisFactor * thisFactor <= topCandidate)
	{
		/* Mark the multiples of this factor */
		int mark = thisFactor + thisFactor;
		while (mark <= topCandidate)
		{
			ix[mark] = false;
			mark += thisFactor;

		}

		/* Print the proven primes so far */
		thisSquare = thisFactor * thisFactor;
		for (; lastSquare < thisSquare; lastSquare++)
		{
			if (ix[lastSquare]) totalCount++;

		}

		/* Set thisfactor to next prime */
		thisFactor++;
		while (!ix[thisFactor]) { thisFactor++; }

	}
	/* Print the remaining primes */
	for (; lastSquare <= topCandidate; lastSquare++)
	{
		if (ix[lastSquare]) { totalCount++; }

	}
	return totalCount;
}













帮我改变一些东西......在这段代码中







help me change something ... in this code

推荐答案

正如我们几小时前你问到的那样: 使用[a,b]中优化的atkins筛子查找素数持续时间 [ ^ ]

我们不是来做你的作业。

为了增加你被告知的内容,你会意识到你的导师这样的网站很好,所以让别人去做你的工作只会导致失败吗?
As we told you when you asked this a few hours ago: Find prime number using sieve of atkins optimized in [a, b] duration[^]
We are not here to do your homework.
And to add to what you have been told, you do realize that your tutor is well ware of sites like this, so getting someone else to do your work would only result in a "fail" anyway?


我们不做你的HomeWork。

HomeWork不会在乞求别人做你的工作时测试你的技能,它会让你思考并帮助你的老师检查您对所学课程的理解以及您应用这些课程时遇到的问题。

你的任何失败都会帮助你的老师发现你的弱点并设定补救措施。

所以,试一试,重读你的课程并开始工作。如果您遇到特定问题,请显示您的代码并解释这个问题,我们可能会提供帮助。



作为程序员,您的工作是创建算法解决特定问题,你不能依赖别人永远为你做,所以有一段时间你必须学会​​如何。而且越快越好。

当你要求解决方案时,就像试图通过培训其他人来学习开车一样。

创建算法基本上是找到数学并做出必要的调整以适应你的实际问题。
We do not do your HomeWork.
HomeWork is not set to test your skills at begging other people to do your work, it is set to make you think and to help your teacher to check your understanding of the courses you have taken and also the problems you have at applying them.
Any failure of you will help your teacher spot your weaknesses and set remedial actions.
So, give it a try, reread your lessons and start working. If you are stuck on a specific problem, show your code and explain this exact problem, we might help.

As programmer, your job is to create algorithms that solve specific problems and you can't rely on someone else to eternally do it for you, so there is a time where you will have to learn how to. And the sooner, the better.
When you just ask for the solution, it is like trying to learn to drive a car by having someone else training.
Creating an algorithm is basically finding the maths and make necessary adaptation to fit your actual problem.


这篇关于用a到b的eratosthenes筛子找到素数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆