当前位置: 代码迷 >> C语言 >> function质数问题
  详细解决方案

function质数问题

热度:348   发布时间:2007-11-06 00:46:29.0
function质数问题

int isPrime(int n)那部分好像不行,输入3,30,只打印3, 后面就通不过,大侠们帮忙看看啊,


#include<stdio.h>
#include <conio.h>
#include <math.h>

int isPrime(int);
int findPrime (int, int ) ;
int findSquare(int,int);

int sum;

int main (void)
{
int x,y,sumPrime;

printf("Enter two numbers\n");
scanf("%d %d",&x,&y);

while(x <= y)
{
printf("Prime: ");
sumPrime=findPrime( x, y);

printf("\nSquare: ");
findSquare(x,y);

printf("\nsum of all primes and squares:%d",sum);

printf("\nEnter two numbers");
scanf("%d %d",&x,&y);
}
return 0;
}

int findPrime (int a, int b )

{

int sumPrime=0,c=0;

while(a<=b)

{

if(isPrime(a))

{

printf("%d ",a);
c++;
sumPrime+=a;
a++;

}

}

printf("\nPrime count = %d\n",c);

return 0 ;

}

int isPrime(int n)

{

int i;

for(i=2;i<n;i++)

if(n%i==0)

return 0;

return 1;

}

int findSquare ( int a,int b)

{

int i,t,c=0,sumSquare = 0;

for(i=2; i*i<=b;i++)

{

printf("%d ", i*i);

c++;

sumSquare+=i*i;

}

printf("\nsumsquare is %d",sumSquare);

printf("\nSquare count = %d\n",c);

return sumSquare;

}

搜索更多相关的解决方案: 质数  function  

----------------解决方案--------------------------------------------------------


int findPrime (int a, int b ) /* 这个函数死循环 */
{
int sumPrime = 0, c = 0;

while(a <= b)
{
if(isPrime(a))
{
printf("%d ",a);
c++;
sumPrime += a;
a++; /* a++ 因该放在 if 外面 */
}
/* a++; // 这里 */
}

printf("\nPrime count = %d\n",c);

return 0;
}

/* 就这个问题,其它没问题 (,那个函数看错了) */

[此贴子已经被作者于2007-11-6 1:56:52编辑过]


----------------解决方案--------------------------------------------------------
回复:(cosdos)int isPrime(int n) /* 这个函...
谢谢,明白了
----------------解决方案--------------------------------------------------------


isPrime没问题,根据你这里写的这个函数是判断素数的,正确。

错的是findPrime函数,改正如下:

int findPrime (int a, int b )

{

int sumPrime=0,c=0;

printf("enter: ");

printf("%d %d\n",a,b);

while(a<=b)

{

if(isPrime(a))


{

printf("%d ",a);
c++;
sumPrime+=a;
a++;

}

else
a++; // 没有这个当a=4的时候就进入死循环了,因为4<30而你又不给a++,所以打出3后就没反应了


}

printf("\nPrime count = %d\n",c);

return 0 ;

}


----------------解决方案--------------------------------------------------------

寒,早了两分钟被人抢了
----------------解决方案--------------------------------------------------------
回复:(BTMouse)寒,早了两分钟被人抢了
呵呵,
我一个函数看错了
----------------解决方案--------------------------------------------------------
谢谢各位
----------------解决方案--------------------------------------------------------
  相关解决方案