C语言输出素数的一个小问题!!新手
#include<stdio.h>#include<math.h>
void main()
{
int m,i,judge=1;
printf("以下我们将为您显示出来从100-200之间所有的素数!\n");
for(m=100 ; m<=200 ; m++)
{
for(i=2 ; i<=sqrt(m) ; i++)
{ if(m%i==0);
{ judge=0;
i=int(sqrt(m))+1;/*这个是跳出循环的,为什么bug显示不能强制转换*/
}
}
if(judge==1)
printf("%d\n",m);
}
}
/*去掉int后运行时程序什么都运行不出现素数*/
错误原因:judge一次变0后不会变回1,
看我上面的代码吧。。。你的思路很乱啊。。。
#include<stdio.h>
#include<math.h>
void main()
{
int m,i,judge=1;
printf("以下我们将为您显示出来从100-200之间所有的素数!\n");
for(m=100 ; m<=200 ; m++)
{
for(i=2 ; i<=sqrt(m) ; i++)
{ if(m%i==0);
{ judge=0;
i=int(sqrt(m))+1;/*这里改成break;*/
}
}
if(judge==1)
printf("%d\n",m);
}
}
跳出循环直接用break;不就好了嘛!{:5_109:} #include <stdio.h>
int jud(int a)
{
int j, k=0;
for(j=2; j<a; j++)
{
if(a%j==0)
break;
else
k+=1;
}
if(j==a)
{
printf("%-5d", a);
}
}
main()
{
int i;
for(i=101; i<201; i++)
{
jud(i);
}
}贴上我自己的代码吧!{:1_1:}{:1_1:}{:1_1:} 平平常常丶 发表于 2013-10-23 11:31 static/image/common/back.gif
跳出循环直接用break;不就好了嘛!
直接break不行的。。。。judge一次变成0后就不会改变了。。。 Status SuShuTest2(int num){
int i;
int d=(int)sqrt((double)num);
for(i=2;i<=d;i++){
if(num%i==0)
return NO;
}
return YES;
}你的代码有点乱,这是我以前写的,很简单。。。 支持楼上,简单 你直接用continue 不就好了
页:
[1]