当前位置: 代码迷 >> C语言 >> c初学者求助
  详细解决方案

c初学者求助

热度:106   发布时间:2006-07-16 02:30:18.0
c初学者求助

#include "stdio.h"
main()
{int n,i,k;
printf("input n:");
scanf("%d",&n);
for(k=2;k<n;k++)
for(i=2;i<k;i++)
{if(k%i==0) break;
else printf("%4d",k);}
}
以上是小弟写的求输入任意自然数N,求小于N的质数,
可是当我输入的N有2个质数时,就会出现重复现象,
例如输入6时,程序输出结果为3 5 5 5
输入10时,输出结果为3 5 5 5 7 7 7 7 9
请大家帮帮忙.


----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-15 23:22:59
王者

等 级:新手上路
帖 子:96
专家分:0
注 册:2006-7-15
  得分:0 

把程序改一下,你看看,还有没有问题:
#include "stdio.h"
main()
{int n,i,k;
printf("input n:");
scanf("%d",&n);
for(k=2;k<n;k++)

for(i=2;i<k;i++)
if(k%i==0) break;
else if(i==k-1)printf("%4d",k); /*多加了一个判断条件,意思是当k除以前的数都除不断,那么再输出,要把该除的全部除完了,再来判定是否为质数,K-1代表最后一个数,i=k的时候就退出循环了*/

}


----------------解决方案--------------------------------------------------------
谢谢王者,发完帖子知道错误在哪儿,就是不知道怎么解决
原来I==K-1这么简单就可以解决,
我昨天想了一晚上
----------------解决方案--------------------------------------------------------
求救,次程序不能求出质数2,请问怎么把质数2求出.
另外, #include "stdio.h"
main()
{int n,i,k,count=0;
printf("input n:");
scanf("%d",&n);
for(k=2;k<n;k++)
{for(i=2;i<k;i++)
if(k%i==0) break;else if(i==k-1) {printf("%4d",k);count++;}
if(count==10) {printf("\n");count=0;}}
}
这样的输出结果按10个一行输出
如果把最后一个语句改为if(count%10==0) printf("\n");
输出结果也是每10个一行,但是每行之间又多空出了4行,请问这是为什么?

----------------解决方案--------------------------------------------------------
以下是引用jsealove在2006-7-16 8:33:41的发言:
求救,次程序不能求出质数2,请问怎么把质数2求出.
另外, #include "stdio.h"
main()
{int n,i,k,count=0;
printf("input n:");
scanf("%d",&n);
if(n>=2) {printf("%4d",2);count++;}
for(k=2;k<n;k++)
{for(i=2;i<k;i++)
if(k%i==0) break;else if(i==k-1) {printf("%4d",k);count++;}
if(count==10) {printf("\n");count=0;}}
}
这样的输出结果按10个一行输出
如果把最后一个语句改为if(count%10==0) printf("\n");
输出结果也是每10个一行,但是每行之间又多空出了4行,请问这是为什么?

要求出2的话很简单,只要在循环前判断一下就可以了
至于为什么有空格我也搞不清楚,语法上应该没问题


----------------解决方案--------------------------------------------------------
至于改为if(count%10==0) printf("\n");为什么有空格的话
是因为当count%10=0时,如果下面判断的数不是质数的话,count%10==0这个条件还是满足的,所以又执行了printf("\n");
空行的数目应该由换行时质数的差决定的
----------------解决方案--------------------------------------------------------
谢谢,好心人帮我这个小菜鸟
我一定努力学习去帮助其他新人,来回报你们
----------------解决方案--------------------------------------------------------
  相关解决方案