注册 登录
编程论坛 C++教室

新手求助(100~200间滴全部素数)

happylin2 发布于 2007-09-05 23:04, 1778 次点击

刚刚接触C++语言..什么都不懂
按着书本自学^.^
在《C++程序设计》(潭浩强)书上看到一段程序
看滴懂什么意思..但在电脑上怎么弄都错误
请高手多多指教.谢谢
(用Turbo C&C++ 3 汉化版 编写)


#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{int m,k,i,n=0;
bool prime;
for(m=101;m<=200;m=m+2)
{prime=true;
k=int(sqrt(m));
for(i=2;i<=k;i++)
if(m%i==0)
{prime =false;
break;
}
if(prime)
{cout <<setw(5) <<m;
n=n+1;
}
if(n%10==0) cout <<endl;
}
cout <<endl;
return 0;
}



好象Turbo这程序不能用BOOL.所以在网上找了个头文件
加进去后,在程序前面加入#include <stdbool.h>
BOOL滴问题解决了,但还是有其他问题.
烦恼- -
情非得以,只能来麻烦大家了.谢谢

[此贴子已经被作者于2007-9-5 23:20:05编辑过]

19 回复
#2
kisscjy2007-09-05 23:16

你的ture写错了,正确是true

for(m=101,m<=200;m=m+2)
这个逗号用分号

自己粗心大意导致的问题~~

#3
happylin22007-09-05 23:21
汗..这个是自己发表滴时候弄错滴
SORRY!我已经改过来了
这些小错误我在软件上还看滴懂..
但是不知为什么,还是有错误- -
#4
happylin22007-09-05 23:24
额..终于搞定了一些问题..
现在就剩下一个问题
下面提示:
Error..\include\generic.h. 36; ,expected
这个是什么东西吖?
我好象没用这个头文件?
#5
happylin22007-09-05 23:26
现在滴程序:

#include <iostream.h>
#include <stdbool.h>
#include <math.h>
#include <iomanip.h>
int main()
{int m,k,i,n=0;
bool prime;
for(m=101;m<=200;m=m+2)
{prime=true;
k=int(sqrt(m));
for(i=2;i<=k;i++)
if(m%i==0)
{prime =false;
break;
}
if(prime)
{cout <<setw(5) <<m;
n=n+1;
}
if(n%10==0) cout <<endl;
}
cout <<endl;
}



请高手多多指教..谢谢
#6
kisscjy2007-09-05 23:53
你把#include <stdbool.h>这一句删掉就好了
#7
happylin22007-09-06 00:45
但是把#include <stdbool.h>这句删掉滴话
就没办法用BOOL了喔?
之前没用这句
那个BOOL根本没办法用?
#8
kisscjy2007-09-06 09:47
我在VC6中把这句删掉之后可以运行程序~~
#9
happylin22007-09-06 10:09
但是我用Turbo不行吖?
汗..到现在就 只会Turbo
VC6不知怎么用吖?- -
#10
PcrazyC2007-09-06 13:36

还是换个编译器吧用TURBO来学C++,好像不太好,不想用VC的话,就用DEV_C++吧,去华军搜一下就出来了

#11
PcrazyC2007-09-06 13:41

这个地方有一个动画,介绍了几种编译器的用法,运行EXE文件,不是WAV文件

https://bbs.bc-cn.net/viewthread.php?tid=136379&star=at#

#12
happylin22007-09-06 15:23
嘿嘿,谢谢了喔..
换了个VC..专门去网上看怎么用..暴汗..
太笨了我..
谢谢大家
#13
whjadr2007-09-07 14:10

恩,去掉#include <stdbool.h>就可以 执行了的

#14
faee02007-09-07 21:00
不用bool就直接用int嘛,用1和0撒,true就是1,false就为0也是可以的嘛
#15
醉生梦死2007-09-08 01:54
嘿嘿,用eclipes c++,支持标准c++,而且eclipes看起来也比较爽
#16
acrobat2007-09-08 09:52
用TURBO对于现在的形式来说好像太好,因为已经过式啦!
#17
Undeadsprout2007-09-08 16:22
#include <stdio.h>
int main()
{
int i,j;
for (i=100; i<=200; i++)
{
for (j=2; j<i; j++)
{
if (i%j == 0)
break;
}
if (j==i)
{
printf("%d 是素数\n", i);
}
}
printf("按任意键结束");
return 0;
}
#18
Undeadsprout2007-09-08 16:23
这应该是比较简洁的代码
#19
weishj2007-09-09 18:40
回复:(Undeadsprout)#include int...
你这个程序可以运行
但从效率上讲不如LZ的。
我们知道,任何一个偶数肯定不是素数,100也不是素数,所以直接从101以2步增,大大减少了循环次数。
另外,由数论的相关知识知道一个数N如果不能被2,3,4,...,sqrt(N)中的任何一个整数,那么这个数即是素数。这样的话,只要循环int(sqrt(N))-1次就可以判断一个数是否素数。
可见编好程还是需要增强一点数学能力的
#20
sunkaidong2007-09-11 10:09
各种编译器版本之间的差别很大,其实也是编译器的设计者的思路差别,现在都喜欢在linux下面的编程,给我们带来不少麻烦,有谁知道那种编译器最好吗?比较好用吗?比较权威
1