哪位C语言大侠能告诉我这个程序哪里有问题啊,为什么运行的结果没有,就见一光标在那闪啊!!
#include<stdio.h>
int su(int m)
{
int i;
for(i=2;i<=m/2;i++)
{
if(m%i==0) return 0;
}
if(i>m/2) return 1;
}
main()
{
int m,n=0;
for(m=100;m<10000;m++)
{
for(;m>0;m=m/10)
{
if(su(m)==0) break;
}
if(m==0) n++;
}
printf("%d",n);
}
补充:这个程序是用来求100到9999间的素数的个数
追问:这里怎么是死循环呢?
当m/10等于0的时候就跳出来了啊
答案:#include<stdio.h>
int su(int m)
{
int i;
for(i=2;i<=m/2;i++)
{
if(m%i==0) return 0;
}
//if(i>m/2) return 1;
return 1;//是素数,自然for循环完毕
}
main()
{
int m,n=0;
for(m=100;m<10000;m++)
{
if(su(m)==1)
{
n++;//是对m进行判断,不是对小于m判断
}
}
printf("%d",n);
}
for(m=100;m<10000;m++)
{
for(;m>0;m=m/10)
{
if(su(m)==0) break;
}
if(m==0) n++;//如果m=0,然后m++,这样m<10000就不能实现
}
其他:for(m=100;m<10000;m++)
{
for(;m>0;m=m/10)
{
if(su(m)==0) break;
}
if(m==0) n++;
}
程序在这里就进入死循环了,不可能出现结果的。 上述是我的程序地址。。因为太大。放不下。 问题1:typedef struct stuelse printf( 那两个for那里死了。。虽然你跳出了里面的for..但是外面的你是跳不出来的。。。
里面的for改成:(t=m;t>0;t=t/10)就可以跳了 。。
还有这种方法求素数效率太低。。要线性筛选最好。。
上一个:学c语言来开发voip通信,有没有必要学单机片
下一个:c语言高手进