|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 请教素数的求法
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
3093
人关注过本帖
标题:
请教素数的求法
只看楼主
加入收藏
Hollie
等 级:
新手上路
帖 子:19
专家分:1
注 册:2009-9-29
结帖率:
0
楼主
收藏
问题点数:0 回复次数:11
请教素数的求法
下面是我写的 程序
输出100到200之间的素数
#include<stdio.h>
#include<math.h>
void main()
{
int i=2,j=100;
for(j=100;j<=200;j++)
{
for(i=2;i<(sqrt(j));i++)
if(j%i==0) break;
printf("%d
"
,j);
}
printf("\n" );
}
不知道是什么问题
全部输出原数
搜索更多相关主题的帖子:
求法
素数
2009-09-29 17:55
举报帖子
使用道具
赠送鲜花
m456m654
等 级:
小飞侠
威 望:
3
帖 子:783
专家分:2806
注 册:2009-9-17
第
2
楼
收藏
得分:0
#include<stdio.h>
#include<math.h>
void main()
{
int i,j;
for(j=100;j<=200;j++)
{
for(i=2;i<=sqrt(j);i++)
if(j%i==0) break;
if(i>sqrt(j))
printf("%d
",j);
}
printf("\n" );
}
2009-09-29 18:16
举报帖子
使用道具
赠送鲜花
Hollie
等 级:
新手上路
帖 子:19
专家分:1
注 册:2009-9-29
第
3
楼
收藏
得分:0
以下是引用
m456m654
在2009-9-29 18:16:53的发言:
#include<stdio.h>
#include<math.h>
void main()
{
int i,j;
for(j=100;j<=200;j++)
{
for(i=2;i<=sqrt(j);i++)
if(j%i==0) break;
if(i>sqrt(j))
...
谢谢 这位朋友
我不明白为什么加一个语句 if(i>sqrt(j)) 就行了
我不加 上面
不是写了 小于等于吗?
为什么不行呢?
2009-09-29 18:22
举报帖子
使用道具
赠送鲜花
m456m654
等 级:
小飞侠
威 望:
3
帖 子:783
专家分:2806
注 册:2009-9-17
第
4
楼
收藏
得分:0
回复 3楼 Hollie
第一:你没有加等号,只是小于。
第二:当你break的时候,for循环就结束了。而你没有将后面的printf语句放到第二个for循环里。所以它就只在第一个for循环里起作用,所以就原数输出了。
2009-09-29 18:32
举报帖子
使用道具
赠送鲜花
Hollie
等 级:
新手上路
帖 子:19
专家分:1
注 册:2009-9-29
第
5
楼
收藏
得分:0
以下是引用
m456m654
在2009-9-29 18:32:31的发言:
第一:你没有加等号,只是小于。
第二:当你break的时候,for循环就结束了。而你没有将后面的printf语句放到第二个for循环里。所以它就只在第一个for循环里起作用,所以就原数输出了。
不对呀
我上面是小于等于啊
break 是用来 跳出内循环
当不是素数的时候就跳出去 是的话 就输出下面的printf语句
这么说 我的printf没放到内循环里面
那怎么样才算放进去?
我就是对for循环
不大熟悉
谢谢了
2009-09-29 18:43
举报帖子
使用道具
赠送鲜花
m456m654
等 级:
小飞侠
威 望:
3
帖 子:783
专家分:2806
注 册:2009-9-17
第
6
楼
收藏
得分:0
#include<stdio.h>
#include<math.h>
void main()
{
int i=2,j=100;
for(j=100;j<=200;j++)
{
for(i=2;
i<(sqrt(j));
i++)
{
if(j%i==0)
break;
printf("%d
"
,j);
}
}
printf("\n" );
}
你只有if了。else就是什么也不做。绿色的大括号你没加。
2009-09-29 18:49
举报帖子
使用道具
赠送鲜花
Hollie
等 级:
新手上路
帖 子:19
专家分:1
注 册:2009-9-29
第
7
楼
收藏
得分:0
以下是引用
m456m654
在2009-9-29 18:49:36的发言:
#include<stdio.h>
#include<math.h>
void main()
{
int i=2,j=100;
for(j=100;j<=200;j++)
{
for(i=2;i<(sqrt(j));i++)
{
if(j%i==0)
break;
...
我把程序改这样
怎么就不对了呢
哎
服了
自己
#include<stdio.h>
#include<math.h>
void main()
{
int i,j;
for(j=101;j<=200;j=j+2)
{
for(i=2;i<=sqrt(j);i++)
{
if(j%i==0) break;
//
if(i>sqrt(j))
printf("%d
",j);
}
}
printf("\n" );
}
2009-09-29 19:05
举报帖子
使用道具
赠送鲜花
m456m654
等 级:
小飞侠
威 望:
3
帖 子:783
专家分:2806
注 册:2009-9-17
第
8
楼
收藏
得分:0
回复 7楼 Hollie
你没有理解我的意思,当然我上个帖子说的有点误导。
我本来是想表达你为什么错了,那个程序是你认为对的,我是想把你的错误标记出来。
那个绿色的口号不应该在那个位置;
这样改:
#include<stdio.h>
#include<math.h>
void main()
{
int i,j;
for(j=101;j<=200;j=j+2)
{
for(i=2;i<=sqrt(j);i++)
if(j%i==0) break;
if(i>sqrt(j))
printf("%d
",j);
}
printf("\n" );
}
我在说说正确的思路,别把你误导了,呵呵:
这里面有两个for循环,第二个for循环到break就应该结束,
if(i>sqrt(j))
printf("%d
",j);
这两句应该在第二个for循环结束后执行,它只属于第一个for循环,不知道你明白了没有。
2009-09-29 19:13
举报帖子
使用道具
赠送鲜花
lxsl
等 级:
论坛游民
帖 子:11
专家分:13
注 册:2009-9-25
第
9
楼
收藏
得分:0
楼上讲的真好,练 我这个刚接触C语言的人都看得很明白。多谢!
2009-09-29 19:21
举报帖子
使用道具
赠送鲜花
Hollie
等 级:
新手上路
帖 子:19
专家分:1
注 册:2009-9-29
第
10
楼
收藏
得分:0
以下是引用
m456m654
在2009-9-29 19:13:33的发言:
你没有理解我的意思,当然我上个帖子说的有点误导。
我本来是想表达你为什么错了,那个程序是你认为对的,我是想把你的错误标记出来。
那个绿色的口号不应该在那个位置;
这样改:
#include<stdio.h>
#include<math ...
谢谢 你
能留下你QQ吗
我还是不大明白
我对for 循环的一直头晕
2009-09-29 19:24
举报帖子
使用道具
赠送鲜花
12
1/2页
1
2
快速回复:
请教素数的求法
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.027552 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved