题目:
请编写一个函数void fun(int m,int k ,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中。
例如,若输入:17,5,则应输出:19,23,29,31,37。
质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
1 #include<stdio.h>
2 #include<math.h>
3
4 bool isPrime(int n)
5 {
6 for(int i = 2 ; i <= sqrt(n) ; i++)
7 {
8 if(n % i == 0)
9 return false;
10 }
11 return true;
12 }
13
14 void fun(int m , int n , int xx[])
15 {
16 int count = 0;
17 for(int j = m + 1 ; count < n ; j++)
18 {
19 if(isPrime(j))
20 {
21 xx[count++] = j;
22 }
23 }
24 }
25
26 int main()
27 {
28 int m , n , zz[1000];
29 printf("please input two integers: ");
30 scanf("%d,%d",&m,&n);
31
32 fun(m , n , zz);
33
34 for( m = 0 ; m < n ; m++)
35 {
36 printf("%d " , zz[m]);
37 }
38 printf("\n");
39
40 return 0;
41 }
复制
--------------------------------------------------------------------------------------------------------------------------------------------------------------
现在再看到上面写的代码,觉得以前写的代码,竟然开了那么大的数组,代码挺粗糙的。
1 #include<iostream>
2 #include<math.h>
3 using namespace std;
4
5 bool isPrime(int n)
6 {
7 for(int i = 2 ; i <= sqrt(n) ; i++)
8 {
9 if(n % i == 0)
10 return false;
11 }
12 return true;
13 }
14
15 void fun(int m , int n , int xx[])
16 {
17 int count = 0;
18 for(int j = m + 1 ; count < n ; j++)
19 {
20 if(isPrime(j))
21 {
22 xx[count++] = j;
23 }
24 }
25 }
26
27 int main()
28 {
29 int m , n ;
30 int *zz = new int[];
31
32 cout<<"please input two integers:";
33 cin>>m>>n;
34
35 fun(m , n , zz);
36
37 for( m = 0 ; m < n ; m++)
38 cout<<zz[m]<<" ";
39
40 cout<<endl;
41
42 return 0;
43 }
复制