标题:求小于一个整数的所有完全平方数及其个数。
只看楼主
l11211002
Rank: 1
等 级:新手上路
帖 子:18
专家分:5
注 册:2009-11-11
结帖率:66.67%
已结贴  问题点数:5 回复次数:8 
求小于一个整数的所有完全平方数及其个数。
/* Note:Your choice is C IDE */
#include "stdio.h"
#include "math.h"
void main()
{
    int n,k=0;
    scanf ("\n%d",&n);
    for ( ;n>=1;n--)
     {
         if (n==(int)sqrt(n)*(int)sqrt(n))
       {  printf("\nk=%d",n);
          k++;
       }
     }
     printf ("有%d个这样的数",k);
     getch();
}
搜索更多相关主题的帖子: 平方 整数 
2009-11-11 18:43
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
得分:1 
不错··  ···
可以实现,不过可以其它角度想想,不超过一个数的完全平方数,那那个被平方的数就不超过给的数的开方了··代码实现:
程序代码:
#include "stdio.h"
#include "math.h"
int main(void)
{
    int n,k=0;
    scanf ("%d",&n);
    printf ("有%d个这样的数,他们分别是:\n",k=sqrt(n));
    while(k--!=1)
        printf("k = %d\n",k*k);
    return 0;
}

2009-11-11 22:25
l11211002
Rank: 1
等 级:新手上路
帖 子:18
专家分:5
注 册:2009-11-11
得分:0 
回复 2楼 lijm1989
额!对不起,我没有懂你说是意思!

谁是谁的谁!去他妈的。谁鸟你啊!
2009-11-11 23:05
yangxiaochao
Rank: 2
等 级:论坛游民
帖 子:34
专家分:34
注 册:2009-10-9
得分:1 
二楼的思路很好,可是,你写的程序有点不足。你不是说不超过一个数的完全平方数,那那个被平方的数就不超过给的数的开方了
这样你就只需要将小于你输入开方的那些数输出来就可以了。可是不知道你为什么还要用k*k
2009-11-12 09:29
一旋无风
Rank: 2
等 级:论坛游民
帖 子:55
专家分:92
注 册:2009-11-11
得分:0 
#include "stdio.h"
#include "math.h"
int main(void)
{
    int n,k=0;
    scanf ("%d",&n);
    printf ("有%d个这样的数,他们分别是:\n",k=sqrt(n));
    while(k>=1)
    {printf("k = %d\n",k*k);k--;}
    return 0;
}
意思就是说  比如输入15   这时k=sqrt(15)=3;然后显示出:3*3;2*2;1*1;这样说懂了吧?
2009-11-12 10:57
一旋无风
Rank: 2
等 级:论坛游民
帖 子:55
专家分:92
注 册:2009-11-11
得分:1 
回复 2楼 lijm1989
你的while 循环不能k--,这不是for循环!否则你的结果会少一个
2009-11-12 10:59
hsm8592
Rank: 2
等 级:论坛游民
帖 子:55
专家分:57
注 册:2009-11-6
得分:1 
k=sqrt(n)  这个 也有问题的 k=sqrt(100) 其实不等于10的 是等于9的
2009-11-12 11:33
hsm8592
Rank: 2
等 级:论坛游民
帖 子:55
专家分:57
注 册:2009-11-6
得分:0 
如果 sqrt(100.)得到9.999999999999999999999999  
k=sqrt(100) 就等于9了,k不能保证是等于10的  有可能等于9的
2009-11-12 11:35
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
得分:1 
以下是引用一旋无风在2009-11-12 10:59:34的发言:

你的while 循环不能k--,这不是for循环!否则你的结果会少一个
呵呵···是我的失误,谢谢指出,因为是直接写的,没有编译运行看看···只是想提供一个思路····
   至于楼上一直在说sqrt(100)不等于10,我就不懂了··不知道是LS有听过计算机一些计算会不准确还是怎么样···(虽然是事实,但那是算多大数的时候才要考虑的事??),我反问LS,如果 sqrt(100)!=10的话,要这个函数干嘛??给你说事用的???
  没事不要听风就是草,自己去运行下,思考下,不要说的计算机那么不行··
2009-11-12 12:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-291964-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.252508 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved