当前位置: 代码迷 >> C语言 >> 大家来看看!!什么地方错了??
  详细解决方案

大家来看看!!什么地方错了??

热度:87   发布时间:2006-01-30 21:53:00.0
大家来看看!!什么地方错了??

这是一个求素数的代码
#include<stdio.h>
int susu(int a)
{
int j,half;
half=a/2;
for(j=2;j<=half;j++)
{
if(a%j==0)
break;
if(j>half)
return a;
}
}
void main()
{
int b,cnt=0,a[1000];
for(b=1;b<=1000;b++)
{if(b<2)
break;
else
{a[cnt]=susu(b);cnt++;}
}
for(b=0;b<cnt;b++)
printf("%d,",a[cnt]);
}

搜索更多相关的解决方案: 地方  

----------------解决方案--------------------------------------------------------
if(j>half)
return a;

应该在for循环的外面吧
----------------解决方案--------------------------------------------------------

不是语法的错误啊,是没有返回值,warning C4715: 'susu' : not all control paths return a value是这个警告,为什么模块返回不了呢??


----------------解决方案--------------------------------------------------------
你的程序我运行通过了,但是我觉得你的逻辑好像有一点问题,我没有细看,我也是初学者,说错了,也请原谅
----------------解决方案--------------------------------------------------------

楼主的程序没看懂啊呵呵
(1)#include <stdio.h>
#include <math.h>

void main()
{ int i,j,k;
clrscr();
printf("2,");
for(i=3; i<100; i+=2)
{
int k = sqrt(i);
for(j=3; j<= k; j+=2)
if(i%j == 0) break;
if(j > k )
printf("%d,", i);
}
getch();
}



(2) #include<stdio.h>
int susu(int a)
{
int j,flag=1;

for(j=3;j<=a/2;j+=2)
{
if(a%j==0)
{ flag=0;break; }
}
return(flag);
}
main()
{
int b;
for(b=1;b<=1000;b+=2)
{
if(1==susu(b))
printf("%6d",b);
}

getch();
}

顺便再问个超级笨的问题:1是不是素数啊


----------------解决方案--------------------------------------------------------
1是素数,你根据素数的定义就可以知道了
----------------解决方案--------------------------------------------------------
我想问5楼一个笨问题,为什么i,j每次自加要加2次呢?
----------------解决方案--------------------------------------------------------
呵呵,这样是避免偶数啊
偶数肯定不是素数,这样就提高效率了
----------------解决方案--------------------------------------------------------
那你这是排除法了,2,3,5,7的倍数都可以了对吧
那你为什么不用完呢?
----------------解决方案--------------------------------------------------------

1不是素数吧,


----------------解决方案--------------------------------------------------------
  相关解决方案