第一位兄弟的回答有点小问题,就是1,1是一个很特殊的数,他没考虑到,1不是质数也不是合数,初中就学过的,其他都没什么了,我也是学c的,我百度空间里可能有你要的东西,还有c的qq群。有空去看看
创新互联-专业网站定制、快速模板网站建设、高性价比秦都网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式秦都网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖秦都地区。费用合理售后完善,十载实体公司更值得信赖。
main()
{
int i,j,k=0,m;
printf("以下这些是1~200之间的质数\n");
printf("2\t");
for(i=3;i=200;i++)
{
m=1;
for(j=2;jsqrt(i)+1;j++)
{
if(i%j==0)
m=0;
break;
}
if(m==1)
{
k++;
printf("%d\t",i);
}
}
printf("\n一共有%d个质数\n",k);
}
判断条件if(a%i==0)是对的,但显示的地方就不对了,你要加个判断,如果不是break出来的,那就是素数。 还有循环不必一致到a-1,其实到它的一半就够了。按照这个来修改一下如下:
int a = 3, i ;
while( a = 200 )
{
for( i=2 ; i=a/2; i++ )
{
if( a % i == 0 )
break ; // 跳出的不是素数
}
if( i a/2 ) // 直到循环结束也没有找到因子的是素数
printf( "%4d", a ) ;
a ++ ;
}
首先定义一个素数判断函数fun,int fun(int x),在里面如果x能被2整除,return 0,然后进入一个以3为初值,步长为2,条件测试表达式为sqrt(x)的for循环,如果x能被i(循环变量)整除,则也是return 0,最后,添加返回语句return 1。
然后在main函数中建立一个以100为初始值,测试条件为200,步长为1的for循环,循环体里执行的是以循环变量为参数调用fun函数,如果它的返回值是1,则输出循环变量的值,并对统计变量的值加1,最后,循环结束后,输出统计变量的值。