作业帮 > 综合 > 作业

将所有大于1小于整数m的飞素数存入xx所指的数组中,非素数的个数通过k传回

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/01 11:54:45
将所有大于1小于整数m的飞素数存入xx所指的数组中,非素数的个数通过k传回
Windows XP+VC++6.0下编译通过并正常运行
#include<iostream>
#include<cstdlib>//exit()
#include<cmath>//sqrt()
using namespace std;
bool isPrimeNumber(int x)//判断是否为素数
{
if(x<=1)
exit(1);
bool y=true;
if(x%2==0&&x!=2)
y=false;
int p=int(sqrt(double(x)));
for(int i=3;i<=p;i=i+2)
if(x%i==0)
{
y=false;
break;
}
return y;
}
void fun(int m, int *k, int xx[])
{
int l=0;
for(int i=2;i<m;i++)
{
if(isPrimeNumber(i)!=true)
{
l++;
*(xx+l-1)=i;
}
}
*k=l;
}
int main()
{
cout<<"Input the m:";
int m;
cin>>m;
int* P=new int[m-2];//最多有m-2个非素数
int k;
fun(m,&k,P);
for(int i=0;i<k;i++)
cout<<P[i]<<"\t";
cout<<endl;
delete []P;
return 0;
}
/*输出
Input the m:30
4 6 8 9 10 12 14 15 16 18
20 21 22 24 25 26 27 28*/
PS:建议用引用传值,这样更易操作
void fun(int m, int &k, int xx[])
{
k=0;
for(int i=2;i<m;i++)
{
if(isPrimeNumber(i)!=true)
{
k++;
*(xx+k-1)=i;
}
}
}
调用格式为fun(m,k,P);