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

1234美 1年前 已收到1个回答 举报

心情女子 幼苗

共回答了16个问题采纳率:100% 举报

Windows XP+VC++6.0下编译通过并正常运行
#include
#include//exit()
#include//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 {
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 cout< cout< 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 {
if(isPrimeNumber(i)!=true)
{
k++;
*(xx+k-1)=i;
}
}
}
调用格式为fun(m,k,P);

1年前

7
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.037 s. - webmaster@yulucn.com