zoukankan      html  css  js  c++  java
  • 几种数

    几种数

    1、水仙花数
    所谓的水仙花数是指一个3位数,其各位数字立方和等于该数本身。例如153是一水仙花数,因为153=111+555+333

    #include <stdio.h>  
    #include <stdlib.h>  
      
    int main()  
    {  
        int i;  
        for(i=100;i<=999;i++)  
        {  
            if(i==((i/100)*(i/100)*(i/100)+(i%10)*(i%10)*(i%10)+(i%100/10)*(i%100/10)*(i%100/10)))  
            printf("%d
    ",i);  
        }  
      
        return 0;  
    } 
    

    这个看上去不难。
    下面,我们来看等于阶乘和的三位数。
    2、等于阶乘和的三位数

        #include <stdio.h>  
        #include <stdlib.h>  
          
        int main()  
        {  
            int i,a,b,c;  
            int j,s1,s2,s3;  
            for(i=100;i<=999;i++)  
            {  
                a=i/100;  
                b=(i%100)/10;  
                c=i%10;  
                for(j=1,s1=1;j<=a;j++)  
                {  
                    s1=s1*j;  
                }  
                for(j=1,s2=1;j<=b;j++)  
                {  
                    s2=s2*j;  
                }  
                for(j=1,s3=1;j<=c;j++)  
                {  
                    s3=s3*j;  
                }  
                if(s1+s2+s3==i)  
                {  
                printf("%d
    ",i);  
                }  
            }  
          
            return 0;  
        }  
    

    这个代码,想想应该能够自己敲出来。
    前面两个都是我自己敲的。
    不过,后面,嘿嘿~~
    3、回文数
    所谓回文数,就是一个数正反都可以读通。
    下面请欣赏:

        #include <stdio.h>  
        #include <stdlib.h>  
          
        int main()  
        {  
            int n,p=0,j,k=0;  
          
            scanf("%d",&n);  
            p=n;  
            while(p>0)  
            {  
                j=p%10;  
                p=p/10;  
                k=j+k*10;  
            }  
            if(k==n)  
            {  
                printf("Yes
    ");  
            }  
            else  
            {  
                printf("No
    ");  
            }  
          
          
            return 0;  
        }  
    

    这是书上的答案,你细细一想。只有把这个数反过来与原来的数相等,它就是回文数。
    4、自守数
    自守数:一个数平方的尾数等于该数的自然数。
    想想其实不怎么难。不过自我感觉有一点抽象。
    看代码吧!

        #include <stdio.h>  
        #include <stdlib.h>  
          
        int main()  
        {  
            int n,b=1;  
            scanf("%d",&n);  
              
           while(b<=n)  
                 {  
                    b=b*10;      
                 }  
           if((n*n-n)%b==0)  
            printf("Yes
    ");  
           else  
            printf("No
    ");  
            return 0;  
        }  
    

    我感觉循环哪里有点抽象。不过想想是哪个样子。
    5、完数
    一个数如果恰好等于它的因子之和,它就是完数。
    或许因子是什么都已经忘了。
    所谓因子就是因数,比如6=2x3. 这里2和3就是因子。

        #include <stdio.h>  
        #include <stdlib.h>  
          
        int main()  
        {  
            int n,i,sum=0;  
            scanf("%d",&n);  
            for (i=1;i<n;i++)  
            {  
                if(n%i==0)  
                {  
                    sum=sum+i;  
                }  
            }  
            if(n==sum)  
            {  
                printf("Yes,its factors are");  
                for(i=1;i<n;i++)  
                {  
                    if(n%i==0)  
                    {  
                        printf(" %d",i);  
          
                    }  
                }  
                printf("
    ");  
            }  
            else  
            {  
                printf("No
    ");  
            }  
          
            return 0;  
        }  
    

    看着代码,很好理解。这是很好的代码,但是自己就是做不来。
    6、素数
    素数不需要介绍了吧!就是质数。
    那素数该怎么求呢?

        #include <stdio.h>  
        #include <stdlib.h>  
          
        int main()  
        {  
            int m,n,i,s;  
            scanf("%d %d",&m,&n);  
            for(i=m;i<=n;i++)  
            {  
                int flag=0;  
                for(s=2;s<i;s++)  
                {  
                    if(i%s==0)  
                    {  
                        flag=1;  
                        break;  
          
                    }  
                }  
                if(flag==0)  
                {  
                    printf(" %d",i);  
                }  
            }  
            printf("
    ");  
            return 0;  
        }  
    

    只要可以找到除1和它本身之外的数被它整除。它就不是素数。
    你知道怎么求,为啥代码写不出来呢?
    7、最后:最大公约数和最小公倍数
    先来代码

        #include <stdio.h>  
        #include <stdlib.h>  
          
        int main()  
        {  
            int m,n,a,b;  
            scanf("%d %d",&a,&b);  
            m=a;  
            n=b;  
            while(n!=0)  
            {  
                int t=m%n;  
                m=n;  
                n=t;  
            }  
            printf("the greatest common divisor is %d
    ",m);  
            printf("the least common multiple is %d
    ",a/m*b);  
          
            return 0;  
        }  
    

    注意:最小公倍数=两数积除以它们的最大公约数。
    为啥要printf(“the least common multiple is %d ”,a/mb); 为啥不ab/m,因为有可能a*b超过了int类型的最大值,所以先除。

    最后:希望可以坚持继续码代码。也希望码代码快乐,多想,多码。

  • 相关阅读:
    Leetcode 421.数组中两数的最大异或值
    Leetcode 419.甲板上的战舰
    Leetcode 417.太平洋大西洋水流问题
    Leetcode 416.分割等和子集
    Leetcode 413.等差数列划分
    Leetcode 410.分割数组的最大值
    由股票价格形成因素看如何选股(发布于06-02 13:09)
    巴菲特的资产配置艺术(发布于06-01 13:28)
    ROE能否包打天下?(发布于05-31 11:27)
    价值迟迟不回归怎么办?(发布于05-30 10:02)
  • 原文地址:https://www.cnblogs.com/skyleafcoder/p/12319605.html
Copyright © 2011-2022 走看看