題目:
請編寫一個函數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 }
複制