题目:
请编写一个函数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 = ; i <= sqrt(n) ; i++)
{
if(n % i == )
return false;
}
return true;
} void fun(int m , int n , int xx[])
{
int count = ;
for(int j = m + ; count < n ; j++)
{
if(isPrime(j))
{
xx[count++] = j;
}
}
} int main()
{
int m , n , zz[];
printf("please input two integers: ");
scanf("%d,%d",&m,&n); fun(m , n , zz); for( m = ; m < n ; m++)
{
printf("%d " , zz[m]);
}
printf("\n"); return ;
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------
现在再看到上面写的代码,觉得以前写的代码,竟然开了那么大的数组,代码挺粗糙的。
#include<iostream>
#include<math.h>
using namespace std; bool isPrime(int n)
{
for(int i = ; i <= sqrt(n) ; i++)
{
if(n % i == )
return false;
}
return true;
} void fun(int m , int n , int xx[])
{
int count = ;
for(int j = m + ; 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 = ; m < n ; m++)
cout<<zz[m]<<" "; cout<<endl; return ;
}