我用的C不是C#。
我现在写一个求500以内素数的程序,我写的事这样:
#include <stdio.h>
#include <math.h>
main()
{
int i,j,k,n=0;
for(i=2;i <=500;i++)
k=sqrt(i);
{for(j=2;j <k;j++)
if(i%j==0)
break;
if(j>=k)
{printf(“%d “,i);
n++;
if(n%5==0)
printf(“\n”);
}
}
getch();
}
这个是有问题的,没有输出。(就是turboC停在那)
稍微改动一下,不用K,循环次数增加了
#include <stdio.h>
#include <math.h>
main()
{
int i,j,n=0;
for(i=2;i <=500;i++)
{for(j=2;j <i;j++)
if(i%j==0)
break;
if(j>=i)
{printf(“%d “,i);
n++;
if(n%5==0)
printf(“\n”);
}
}
getch();
}
这样就对了~~
但是仅仅多了个k,不至于没输出啊~请教各位了!(如果>=还是>不影响结果就不用考虑了,我觉得应该没问题~)
-
近期文章
近期评论
- coolker 发表在《打造最快的Hash表》
- struggle 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- diys 发表在《C语言编程宝典(王大刚) 1.1 C 语言的产生与发展》
文章归档
- 2022 年十月
- 2014 年一月
- 2013 年十二月
- 2012 年十一月
- 2012 年七月
- 2012 年六月
- 2012 年五月
- 2012 年四月
- 2012 年三月
- 2012 年二月
- 2011 年十二月
- 2011 年十月
- 2011 年九月
- 2011 年八月
- 2011 年七月
- 2011 年六月
- 2011 年五月
- 2011 年四月
- 2011 年三月
- 2011 年二月
- 2011 年一月
- 2010 年十二月
- 2010 年十一月
- 2010 年十月
- 2010 年九月
- 2010 年八月
- 2010 年七月
- 2010 年六月
- 2010 年五月
- 2010 年四月
- 2010 年三月
- 2010 年二月
- 2010 年一月
- 2009 年十二月
- 2009 年十一月
- 2009 年十月
- 2009 年九月
- 2009 年八月
- 2009 年七月
- 2009 年六月
- 2009 年五月
- 2009 年四月
- 2009 年三月
- 2009 年二月
- 2009 年一月
- 2008 年十二月
- 2008 年十一月
- 2008 年十月
- 2008 年九月
- 2008 年八月
- 2008 年七月
- 2008 年六月
- 2008 年五月
- 2008 年四月
- 2008 年三月
- 2008 年二月
- 2008 年一月
- 2007 年十二月
- 2007 年十一月
- 2007 年十月
- 2007 年九月
- 2007 年八月
- 2007 年七月
- 2007 年六月
- 2007 年三月
- 2007 年二月
- 2007 年一月
- 2006 年十二月
- 2006 年十一月
- 2006 年十月
- 2006 年九月
- 2006 年八月
- 2006 年七月
- 2006 年六月
- 2006 年五月
- 2006 年四月
- 2006 年三月
- 2006 年二月
- 2006 年一月
- 2005 年十二月
- 2005 年十一月
分类目录
功能
#include <math.h>
main()
{
int i,j,k,n=0;
for(i=2;i <=500;i++)
{
k=sqrt(i); /*进入括号*/
for(j=2;j <=k;j++) /*j<=k,不然你会少判断它的平方根,例如4中2就没考虑到
是不对的*/
if(i%j==0)
break;
if(j>k) /*这里要写成大于*/
{printf(“%d “,i);
n++;
if(n%5==0)
printf(“\n”);
}
}
getch();
}
上面的就是可以得到结果的;至于你的没有输出是因为你的for循环只是包含了一个sqrt语句,当退出时候i=500,k=22,当然了500不是素数,当然不会有输出了,给你个建议,写程序的时候注意代码格式,适当的增加缩进,不然很容易出现错误。