原帖由 [bold][underline]StarWing83[/underline][/bold] 于 2007-12-19 16:31 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1154351&ptid=193336][/url]
这个怎么样?#include
#include
int main() {
int i,j,m,n=0;
for (i=2;i
这个怎么样?#include
#include
int main() {
int i,j,m,n=0;
for (i=2;i
这个负数都出来了!!!
----------------解决方案--------------------------------------------------------
从1到n去除n,从2到sqrt(n)去除n都浪费了好多时间啊,其实只有2除的时候有用,完全可以从3开始,用所有的奇数去除(2单独考虑),这样就可以降低一半的循环次数。
要想用更少的循环次数就用筛法!几乎每本c语言书上都有这个例题吧!
----------------解决方案--------------------------------------------------------
回复 11# 的帖子
你用什么编译器?我的代码在VC++2005上通过。 ----------------解决方案--------------------------------------------------------
你删掉(float)应该就可以了,加这个是为了防止2005的error。我测试一下再说
----------------解决方案--------------------------------------------------------
程序代码:
#include<stdio.h>
#include<math.h>
int main() {
unsigned int i,j,m,n=0;
for (i=2;i<=32767;i++) {
for (j=2,m=sqrt(i);j<=m && i%j;j++);
if (j>m)printf("%5d%c",i,(++n)%12?' ':'\n');
}
getchar();
}
以上代码在TC2.0上通过 #include<math.h>
int main() {
unsigned int i,j,m,n=0;
for (i=2;i<=32767;i++) {
for (j=2,m=sqrt(i);j<=m && i%j;j++);
if (j>m)printf("%5d%c",i,(++n)%12?' ':'\n');
}
getchar();
}
----------------解决方案--------------------------------------------------------
#include"stdio.h"
#include"math.h"
main()
{
int a,b,i,flag;
for(a=2;a<=32767;a++)
{ b=sqrt(a);
flag=0;
for(i=2;i<=b;i++)
{ if(a%i==0)
{ flag=1;
break;
}
}
if(flag==0)
printf("%5d",a);
}
}
帮我看一下!这个程序那个地方错了!结果是个无限循环!
----------------解决方案--------------------------------------------------------
#include"stdio.h"
#include"math.h"
main()
{
int a,b,i,flag;
for(a=2;a<=32767;a++)
{ b=sqrt(a);
flag=0;
for(i=2;i<=b;i++)
{ if(a%i==0)
{ flag=1;
break;
}
}
if(flag==0)
printf("%5d",a);
}
}
帮我看一下!这个程序那个地方错了!结果是个无限循环!
----------------解决方案--------------------------------------------------------
LS的 其实不应该加 break 也可以的
----------------解决方案--------------------------------------------------------
呵呵,其实那个算法的for后面;号是必须的. 空语句么.
----------------解决方案--------------------------------------------------------
原帖由 [bold][underline]C语言的深度[/underline][/bold] 于 2007-12-19 20:01 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1154636&ptid=193336][/url]
LS的 其实不应该加 break 也可以的
LS的 其实不应该加 break 也可以的
为什么不应该加!当然结果是一样的,但可以少做些无用功啊!
----------------解决方案--------------------------------------------------------