高端求素数,忙了半小时,来Showshow
c语言吧
全部回复
仅看楼主
level 1
bletchley 楼主
输入了个很大的数,结果他本身就是素数,我还以为程序错了,反复检查,哎......我想问下,为什么exit(0) 那里为什么不能用break来跳出循环啊?
#include "stdio.h"
#include "math.h"
void sushu(int y);
void onetwo(int x)
{
if ((x==1)||(x==2))
printf("%d",x);
else
sushu(x);
}
void sushu(int y)
{
int i;
for (i=2;i<=y;i++)
{
if(y==i)
{
printf("%d",y);
exit(0);
}
if((y%i==0)&&(y!=i))
{
printf("%d*",i);
sushu(y=y/i);
}
}
}
void main()
{
int n;
scanf("%d",&n);
printf("%d=",n);
onetwo(n);
}

2010年02月28日 15点02分 1
level 6

lz
的程序中,break和exit(0)都是一样的效果...
只是break跳出循环(但后面没其他语句,跳出后也就结束了),而exit(0)终止程序
2010年03月01日 00点03分 2
level 8
首先需要明白的是
甚麼是素数
比如拿61来示范
sqrt(61) =7.8102
所以只要
bool function(int num)
{
   for (i=2;i<=(int)sqrt((double)num);i++)
   if ( num%i == 0 )
    retrun false;
   retrun true;
}
---------------
function(61)==1?printf("她是素数"):printf("她不是素数");

2010年03月01日 01点03分 3
level 1
bletchley 楼主
2L,不一样啊,我换成break后程序运行不是我想要的结果,分解质因数分解了好多好多,比如本来输入72得72=2*2*2*3*3,可后面又是333又是*3,乱七八糟显示了一大串
2010年03月01日 02点03分 4
1