当前位置: 代码迷 >> C语言 >> 关于完全平方的问题,
  详细解决方案

关于完全平方的问题,

热度:177   发布时间:2007-11-01 14:31:46.0
关于完全平方的问题,

要求用户输入两个数字X,Y,比如输入3,30,算一下一共有几个质数,和所有完全平方的数,比如3-30之间有4,9,16,25,这4个数是完全平方数。最后再把所有质数和可以平方的数都加起来,并且打印出来,
显示结果如下
Prime:3 5 7 11 13 17 19 23 29
Prime count = 9
Square: 4 9 16 25
Square count = 4
Sum of all primes and squares:181

下面是我写的,不过完全平方那部分好像不行,大侠们帮忙看看啊。

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

int isPrime(int);
int findPrime (int, int ) ;
int findSquare(int,int);
int square (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 t=0,c=0;
while(a<=b)
{

if(isPrime(a))

printf("%d ",a);
sum+=a;
c++;
a++;
}
printf("\nPrime count = %d\n",c);
return t ;
}

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 t;
if(square(t))



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

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

int square (int x)
{

int i,k;
k = sqrt(i);
for(i=2;i<=x;i++)
{

if(k*k==1)
return 0;
return 1;
}
}

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

----------------解决方案--------------------------------------------------------
以下是引用alicefioan37在2007-11-1 14:31:46的发言:

要求用户输入两个数字X,Y,比如输入3,30,算一下一共有几个质数,和所有完全平方的数,比如3-30之间有4,9,16,25,这4个数是完全平方数。最后再把所有质数和可以平方的数都加起来,并且打印出来,
显示结果如下
Prime:3 5 7 11 13 17 19 23 29
Prime count = 9
Square: 4 9 16 25
Square count = 4
Sum of all primes and squares:181

下面是我写的,不过完全平方那部分好像不行,大侠们帮忙看看啊。

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

int isPrime(int);
int findPrime (int, int ) ;
int findSquare(int,int);
int square (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 t=0,c=0;
while(a<=b)
{

if(isPrime(a))

printf("%d ",a);
sum+=a;
c++;
a++;
}
printf("\nPrime count = %d\n",c);
return t ;
}

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 t;
if(square(t))



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

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

int square (int x)
{

int i,k;
k = sqrt(i); //只看了你这部分,你该把k = sqrt(i);放进FOR循环就能算出了
for(i=2;i<=x;i++)
{

if(k*k==1)
return 0;
return 1;
}
}



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

看看我的吧。


不知道怎么贴代码,只能贴附件了。
还忘高手指点。
----------------解决方案--------------------------------------------------------

int square (int x)
{

float i,k;

for(i=2;i<=x;i++)
{
k = sqrt(i);
if(k*k != i)
return 0;
return 1;
}
}

[此贴子已经被作者于2007-11-1 16:22:01编辑过]


----------------解决方案--------------------------------------------------------
3 楼,代码直接复制就可以了嘛.....
----------------解决方案--------------------------------------------------------
3楼,你的

j = 0;
for (i=x; i<=y; i++)
{
if ((i%2!=0) && (i%3!=0) && (i%5!=0)) /* 这里是错误的,比如49 */
a[j++] = i;
if ((i==2)||(i==3)||(i==5))
a[j++] = i;
}

===========================
可以用for (i=x;i<=y;i++)
{
for (m=0; m<sqrt(i); m++)
if (i%m == 0) continue;
a[j++] = i;
}

----------------解决方案--------------------------------------------------------
LS的,那再加一个&amp;&amp;(i%7!=0)下面再加一个||(i==7)也可以吧。
----------------解决方案--------------------------------------------------------

复制了代码,但贴不进来。郁闷
谢谢6楼的。


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

大侠们都不行啊


----------------解决方案--------------------------------------------------------
嘿嘿
不学 C ...能直接 学 JAVA 吗?

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