您的位置:首页 > 其它

求大于整数m且紧靠m的k个素数 及 判断一个数是否为素数的方法

2013-07-18 15:37 218 查看
题目:

请编写一个函数void fun(int m,int k ,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中。

例如,若输入:17,5,则应输出:19,23,29,31,37。

质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。

#include<stdio.h>
#include<math.h>

bool isPrime(int n)
{
for(int i = 2 ; i <= sqrt(n) ; i++)
{
if(n % i == 0)
return false;
}
return true;
}

void fun(int m , int n , int xx[])
{
int count = 0;
for(int j = m + 1 ; count < n ; j++)
{
if(isPrime(j))
{
xx[count++] = j;
}
}
}

int main()
{
int m , n , zz[1000];
printf("please input two integers: ");
scanf("%d,%d",&m,&n);

fun(m , n , zz);

for( m = 0 ; m < n ; m++)
{
printf("%d  " , zz[m]);
}
printf("\n");

return 0;
}


--------------------------------------------------------------------------------------------------------------------------------------------------------------

现在再看到上面写的代码,觉得以前写的代码,竟然开了那么大的数组,代码挺粗糙的。

#include<iostream>
#include<math.h>
using namespace std;

bool isPrime(int n)
{
for(int i = 2 ; i <= sqrt(n) ; i++)
{
if(n % i == 0)
return false;
}
return true;
}

void fun(int m , int n , int xx[])
{
int count = 0;
for(int j = m + 1 ; count < n ; j++)
{
if(isPrime(j))
{
xx[count++] = j;
}
}
}

int main()
{
int m , n ;
int *zz = new int[];

cout<<"please input two integers:";
cin>>m>>n;

fun(m , n , zz);

for( m = 0 ; m < n ; m++)
cout<<zz[m]<<" ";

cout<<endl;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐