几种数

几种数

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类型的最大值,所以先除。

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

原文地址:https://www.cnblogs.com/skyleafcoder/p/12319605.html