这个计算素数的程序能走多远
How far can I go with this program of computing prime numbers?
#include <iostream>
using namespace std;
int ifprime(long long int);
int main()
{
long long int number;
cout<<"Enter the number of prime numbers you want to know:n";
cin>>number; //number is the number of prime numbers to be displayed
long long int j=0;
long long int m=2; //m would be used as consecutive natural numbers on which, test of prime number is performed
while (1<2)
{
if(ifprime(m)==1)
{
j+=1; // j is the counter of the prime numbers found and displayed
cout<<m<<endl;
}
m+=1;
if(j==number)
{
break;
}
}
}
int ifprime(long long int a)
{
for(int i=2;i<a;i++)
{
if(a%i==0)
{
return 0;
}
}
return 1;
}
与已知最大的素数相比,long long int
的范围似乎很小:/
即使我要计算long long int
范围内的最后一个素数,我能计算出计算该数所需的时间吗?
假设最大的素数是n = 13
。然后,您的程序将尝试以下数字:2, 3, 4,.. 11, 12
所以你必须测试你的数字 n - 2 次(或多或少是 n 次),直到你达到这一点,你的程序必须经过 2, 3, 4, ... 11, 12, 13
,这也是(或多或少)n 次。 -->
复杂性O(n^2)
.加快程序速度的简单提示:将到目前为止找到的每个质数存储在std::vector
中,并且只尝试这些。这样就可以避免整数分解(例如除以 6 (2 * 3) 或 8 (2 * 2 * 2))。
相关文章:
- IPC使用多个管道和分支进程来运行Python程序
- boost::asio如何生成多个协同程序,然后加入它们
- 试图创建一个多线程程序来查找0-100000000之间的总素数
- sigwait() 在多线程程序中不起作用
- 多线程程序中出现意外的内存泄漏
- 带有进度表的 curl 多接口程序
- 叮当格式化程序多行格式配置错误
- 通过安装信号处理程序关闭多线程应用程序
- 我如何使用此程序管道多个命令?C++
- C++事件系统 - 多态事件和事件处理程序
- 多线程减慢程序速度:无错误共享,无互斥锁,无缓存未命中,无小工作量
- 在 Windows/C++ 上使用多进程应用程序的高精度定时操作
- 为什么我的程序多次显示输出
- 为什么我的程序多次调用复制构造函数
- 这个计算素数的程序能走多远
- 当从应用程序多次调用数据库过程时,性能是否会受到影响
- C++应用程序多线程中的锁定方法
- Win32屏幕保护程序多显示器与主显示器不是最左边
- 内存泄漏能走多远
- 指针可以从其起点指向多远?