| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 567 人关注过本帖
标题:显示所有质数,弄不出1来
收藏  订阅  推荐  打印 
ReadingLi
Rank: 1
等级:新手上路
帖子:14
积分:240
注册:2007-8-6
显示所有质数,弄不出1来

题中让我弄出1~100的质数,研究半天,终于出来了
#include <iostream>
using namespace std;
void main ()
{
int n,b,c,d;
for(n=1;n<=100;n++)
{
for (b=n;b>=1;b--)
{
d=b-1;
if (d==0)
break;
c=n%d;
if (d>1&&c==0)
break;
else if (d==1&&c==0)
cout <<n<<" "endl;


}
}
}
我的意思是让每个数一个个往下除(比自己小的数),如果中途有能除尽了的数就不是质数,当只有除到1时才能除尽就是质数了,这样出来后是从2开始的,我明白当n=1时,d=b-1=0了,break跳出,可是不跳出会说程序出错,还让我发送,我理解的原因是因为c=n%d,中,d=0了,所以不行,可这样一来,1就出不来了啊!帮忙改改让1也自己出来啊,我这个程序能想到的就是在循环之前直接加个cout <<"1";了

搜索更多相关主题的帖子: 质数  
2007-8-7 15:37
aipb2007
Rank: 12Rank: 12Rank: 12
来自:CQU
等级:贵宾
威望:40
帖子:2881
积分:29414
注册:2007-3-18

晕,据我所知,1非素数,也非和数,最小的素数是2,这可是初中知识啊!


Fight  to win  or  die...
2007-8-7 16:33
ReadingLi
Rank: 1
等级:新手上路
帖子:14
积分:240
注册:2007-8-6

靠~~~~不会吧,我为这个1弄了一多小时了

2007-8-7 16:49
maoguoqing
Rank: 12Rank: 12Rank: 12
来自:重庆
等级:贵宾
威望:26
帖子:2939
积分:29771
注册:2005-12-5

  if (1 == n) cout&lt;&lt;n;  

天行健,君子以自强不息!!
2007-8-7 20:13
狂人老大
Rank: 3Rank: 3
来自:杭州
等级:中级会员
威望:1
帖子:394
积分:4206
注册:2007-6-21

呵呵  

ACMer的QQ群:33741351
单片机QQ群:55130117
2007-8-8 00:21
ReadingLi
Rank: 1
等级:新手上路
帖子:14
积分:240
注册:2007-8-6
回复:(maoguoqing)[em02] if (1 == n) cout

呵呵,我也就知道能这么干,我觉得开始我一下定义了四个变量,是不是有点多啊,能不能有什么更简单的程序啊,感觉有点复杂!
2007-8-8 09:56
aipb2007
Rank: 12Rank: 12Rank: 12
来自:CQU
等级:贵宾
威望:40
帖子:2881
积分:29414
注册:2007-3-18

int i,j;
cout << 2 << endl;
for (i = 3;i <= 100;++i){
for (j = 2;j < i;++j)
if (i % j == 0)
break;
if (i == j)
cout << i << endl;
}
-----------------------------------
当然还可以改进,那里j < i可以改为j < sqrt(i)(i开方)。

Fight  to win  or  die...
2007-8-8 10:23
ReadingLi
Rank: 1
等级:新手上路
帖子:14
积分:240
注册:2007-8-6

OK,谢了,确实简单了不少,你的意思是,从2往上一个个除是吧,这样省了不少步骤
2007-8-8 10:44
狂人老大
Rank: 3Rank: 3
来自:杭州
等级:中级会员
威望:1
帖子:394
积分:4206
注册:2007-6-21

#include<iostream>
using namespace std;
int main()
{
cout<<"2"<<endl;
for(int i(3);i<=100;i=i+2)
{
for(int j(2);j<=i;j++)
if(i%j==0)break;
if(i==j)
cout<<i<<endl;
}
}
改了一点点 这样可以减少运算

ACMer的QQ群:33741351
单片机QQ群:55130117
2007-8-8 12:25
aipb2007
Rank: 12Rank: 12Rank: 12
来自:CQU
等级:贵宾
威望:40
帖子:2881
积分:29414
注册:2007-3-18


j++ ?减少运算?


望指教~

[此贴子已经被作者于2007-8-8 12:39:42编辑过]


Fight  to win  or  die...
2007-8-8 12:34
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.088776 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved