/*刚一个同学来问我求质数的问题,我想这个问题很简单,就说百度一大堆,搜了一下,看见很多都是错误的或者即使正确效率依然很低,但要自己立马写出来也不是1+1的事情,于是就试着写了下,自我感觉不错,因为我觉得我写的这个运算效率还是比较高的。*/
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
void main()
{
int max,len=2;
cout<<"***********求质数,请输入最大范围************"<<endl<<"0~多少呢?请输入:";
cin>>max;
cout<<setiosflags(ios::right)<<setw(4)<<2<<" "<<setiosflags(ios::right)<<setw(4)<<3<<" ";
for (int a=2;a<max;a++)
{
int sta=0; //为内循环做个参考变量,在内循环外,外循环内定义合适。
int sub=sqrt(a); //只需要对a的算术平方以内数循环即可,用a也是重复
for (int b=2;b<=sub;b++)
{
if (a%b==0) {sta++;}
if (b==sub && sta==0)
{
cout<<setiosflags(ios::right)<<setw(4)<<a<<" ";
len++;
if (len%10==0) cout<<endl;
}
}
}
cout<<endl;
}
求质数(C++语言)
最新推荐文章于 2024-05-27 08:02:49 发布