| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1327 人关注过本帖
标题:显示所有质数,弄不出1来
只看楼主 加入收藏
ReadingLi
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-8-6
收藏
 问题点数:0 回复次数:15 
显示所有质数,弄不出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-08-07 15:37
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

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


Fight  to win  or  die...
2007-08-07 16:33
ReadingLi
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-8-6
收藏
得分:0 

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

2007-08-07 16:49
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
  if (1 == n) cout&lt;&lt;n;  

天行健,君子以自强不息!!QQ:68660681
2007-08-07 20:13
狂人老大
Rank: 1
来 自:杭州
等 级:新手上路
威 望:1
帖 子:394
专家分:0
注 册:2007-6-21
收藏
得分:0 
呵呵  

ACMer的QQ群:33741351
单片机QQ群:55130117
2007-08-08 00:21
ReadingLi
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-8-6
收藏
得分:0 
回复:(maoguoqing)[em02] if (1 == n) cout
呵呵,我也就知道能这么干,我觉得开始我一下定义了四个变量,是不是有点多啊,能不能有什么更简单的程序啊,感觉有点复杂!
2007-08-08 09:56
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
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-08-08 10:23
ReadingLi
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-8-6
收藏
得分:0 
OK,谢了,确实简单了不少,你的意思是,从2往上一个个除是吧,这样省了不少步骤
2007-08-08 10:44
狂人老大
Rank: 1
来 自:杭州
等 级:新手上路
威 望:1
帖 子:394
专家分:0
注 册:2007-6-21
收藏
得分:0 
#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-08-08 12:25
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

j++ ?减少运算?


望指教~

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


Fight  to win  or  die...
2007-08-08 12:34
快速回复:显示所有质数,弄不出1来
数据加载中...
 
   



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

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