| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 430 人关注过本帖
标题:c初学者求助
只看楼主 加入收藏
jsealove
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-7-16
收藏
 问题点数:0 回复次数:7 
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-16 02:30
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-16 07:22
王者
Rank: 1
等 级:新手上路
帖 子: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的时候就退出循环了*/

}


2006-07-16 07:30
jsealove
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-7-16
收藏
得分:0 
谢谢王者,发完帖子知道错误在哪儿,就是不知道怎么解决
原来I==K-1这么简单就可以解决,
我昨天想了一晚上
2006-07-16 08:08
jsealove
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-7-16
收藏
得分:0 
求救,次程序不能求出质数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行,请问这是为什么?
2006-07-16 08:33
工藤♀新一
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-5-4
收藏
得分:0 
以下是引用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的话很简单,只要在循环前判断一下就可以了
至于为什么有空格我也搞不清楚,语法上应该没问题


很高兴能和大家一起学习程序! QQ:114109098
2006-07-16 08:57
工藤♀新一
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-5-4
收藏
得分:0 
至于改为if(count%10==0) printf("\n");为什么有空格的话
是因为当count%10=0时,如果下面判断的数不是质数的话,count%10==0这个条件还是满足的,所以又执行了printf("\n");
空行的数目应该由换行时质数的差决定的

很高兴能和大家一起学习程序! QQ:114109098
2006-07-16 09:07
jsealove
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-7-16
收藏
得分:0 
谢谢,好心人帮我这个小菜鸟
我一定努力学习去帮助其他新人,来回报你们
2006-07-16 10:09
快速回复:c初学者求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016289 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved