首页 新闻 会员 周边

求助c语言 验证斐波那契数列 代码哪里错了?

0
悬赏园豆:15 [已解决问题] 解决于 2012-04-06 12:26
 1 #include<stdio.h>
2 #include<math.h>
3 double ss (int n);
4 int main ()
5 {
6 int count,i,k;
7 count =0;
8 for(i=6;i<=100;i+=2)
9 {
10 for(k=3;k<=i;k+=2)
11 {
12 if(ss(k)==1&&ss(i-k)==1)
13 {
14 printf("2%d=%d+%d\n",i,k,i-k);
15 count++;
16 if(count%5==0)
17 printf("\n");
18 continue;
19 }
20 }
21 }
22 return 0;
23 }
24
25 double ss (int n)
26 {
27 int j;
28 double m;
29 m=sqrt(n);
30 for(j=1;j<=m;j++)
31 if(n%j==0)break;
32 if(j>m)
33 return 1;
34 else
35 return 0;
36 }

输出时什么也没有,直接结束了

c
ShaneJim的主页 ShaneJim | 菜鸟二级 | 园豆:206
提问于:2012-03-22 21:52
< >
分享
最佳答案
0
 1 #include<stdio.h>
2 #include<math.h>
3 int ss (int n);
4 int main (){
5 int i,k;
6 //这是把一个偶数分解成两个奇数的和?
7 //i是偶数
8 for(i=2;i<=20;i+=2){
9 //k和i-k是奇数
10 for(k=1;k<=i;k+=2)
11 if(ss(k)==0&&ss(i-k)==0){
12 printf("%d=%d+%d\n",i,k,i-k);
13 continue;
14 }
15 printf("\n");
16 }
17 return 0;
18 }
19
20 int ss(int n){
21 int j;
22 double m;
23 m=sqrt(n);
24 //如果j是否是n的因子,break跳出循环
25 //这个for()循环无论何时j=1时都会结束的
26 for(j=1;j<=m;j++)
27 if(n%j==0)
28 break;
29 if(j>m)
30 return 1;
31 else
32 return 0;
33 }
34 //我认为
35 //1、n是奇数,当n=1时return 1
36 //2、n是奇数,当n!=1时都return 0;
37 //a、你的k=3,ss(k)总是为0,
38 //b、你的ss(k)的返回类型是double,if(里面永远都是0)
39 //c、即使返回类型是int,但是你的ss(k)==0你的程序的if(里面永远都是0)
40 //例如:取n=15;m=3...; for(j=1)n%1==0
41 //( j=2)<(m=3......)rerun 0;
收获园豆:12
编程小神仙 | 菜鸟二级 |园豆:233 | 2012-03-30 13:41

懂了,原来错了这么多地方

ShaneJim | 园豆:206 (菜鸟二级) | 2012-04-06 12:24
其他回答(3)
0

什么意思啊,是输出6至100中的斐波那契数数吗?

artwl | 园豆:16736 (专家六级) | 2012-03-22 23:17

是的

支持(0) 反对(0) ShaneJim | 园豆:206 (菜鸟二级) | 2012-03-23 12:12
0
收获园豆:1
dudu | 园豆:31007 (高人七级) | 2012-03-23 11:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册