求第n个数列是否素数
编写函数is_fib_prime( )来检验第n个fibonacci数是否为素数。要求该函数需要调用函数fibonacci( )和is_prime()函数, 其中函数fibonacci( )产生第n个fibonacci数;函数is_prime( )用来判断输入的数是否为素数。此外,在主函数中,输入整数n及调用is_fib_prime(),最后输出第n个fibonacci数是否为素数的信息。注意各个函数的接口设置。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define LIMIT 10
/*******************
********************/
bool is_prime(int n)
{
int flag;
if(2 == n) return true;
for(int i = 2, flag = true; (i * i) <= n; i++)
{
if(0 == n % i)
{
flag = false;
break;
}
}
return flag;
}
long Fibonacci(long n) //返回第n个fibonacci数
{
long f0 = 0, f1 = 1, temp;
for(long i = 2; i <= n; i++)
{
temp = f1;
f1 += f0;
f0 = temp;
}
return f1;
}
bool is_fib_prime(int n) //判断第n个fibonacci数是否是素数
{
if(is_prime(Fibonacci(n)))
return true;
return false;
}
int main()
{
int num;
puts("输入数num:(enter q to quit)");
while(1 == scanf("%d", &num))
{
if(is_fib_prime(num))
printf("%d is prime\n", Fibonacci(num));
else
printf("%d is not prime\n", Fibonacci(num));
puts("输入下个数num:(enter q to quit)");
}
return 0;
}
[解决办法]
调试也是技术
[解决办法]
#include <stdio.h>
#define LIMIT 10
#define true 1
#define false 0
/*******************
********************/
int is_prime(int n)
{
int flag;
int i;
if (2 == n)
return true;
for (i = 2, flag = true; (i * i) <= n; i++) {
if (0 == n % i) {
flag = false;
break;
}
}
return flag;
}
int main(int argc, char **argv)
{
int i;
for(i = 3; i < 10000; ++i)
printf("%d-%d\n", i,is_prime(i));
return 0;
}
3-1
4-0
5-1
6-0
7-1
8-0
9-0
10-0
11-1
12-0
13-1
14-0
15-0
16-0
17-1
18-0
19-1
20-0
21-0
22-0
23-1
24-0
25-0
26-0
27-0
28-0
29-1
30-0
31-1
32-0
33-0
34-0
35-0
36-0
37-1
38-0
39-0
40-0
41-1
42-0
43-1
44-0
45-0
46-0
47-1
48-0
49-0
50-0
51-0
52-0
53-1
54-0
55-0
56-0
57-0
58-0
59-1
60-0
61-1
62-0
63-0
64-0
65-0
66-0
67-1
68-0
69-0
70-0
71-1
72-0
73-1
74-0
75-0
76-0
77-0
78-0
79-1
80-0
81-0
82-0
83-1
84-0
85-0
86-0
87-0
88-0
89-1
90-0
91-0
92-0
93-0
94-0
95-0
96-0
97-1
98-0
99-0
100-0
101-1
102-0
103-1
104-0
105-0
106-0
107-1
108-0
109-1
110-0
111-0
112-0
113-1
114-0
115-0
116-0
117-0
118-0
119-0
120-0
121-0
122-0
123-0
124-0
125-0
126-0
127-1
128-0
129-0
130-0
131-1