୯Aliza୬

博客园 首页 新随笔 联系 订阅 管理
  3 随笔 :: 0 文章 :: 0 评论 :: 100 阅读

题型1:水仙花数(包含分离数字各位)

  • 例题:水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身本题要求编写程序,计算所有N位水仙花数。给出正整数n(搬运自PTA 作者:徐镜春)

: 水仙花数的重要一步就是判断位数(1)和分离数位(2)。两者可以同时进行

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


int test1(int n)
{
    int i,sum=0,j;
    int q=n;
    int num[10];
    
    for(i=0;;i++)
    {
        if(n%10!=n)
        {
            num[i] = n % 10;  //分离出最右侧的数字
            n = n/10 ; /*删除最右侧数字,使得当前右
                        二数变成最右侧,以此循环(1)*/
        }
        else
        {
            num[i] = n; //由于n&10==n了这是最后一位数,也要保存
            break;
        }
        /*运行到此处时i就是num[]的最后一个有保存数字的下
        标,因此下一次数组循环计算总值就循环到这(2)*/
    }
    
    for(j=0;j<=i;j++)
    {
        sum = sum + (int)pow(num[j],i+1);
    }
    
    if(sum==q)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

 int main()
 {
      ...//包括求函数范围,引用test1,输出.
      return 0;
  }//注:这种写法在Pta上写:n=7时运行超时,需要改进.

题型2:素数(除了 除以1与其本身的数 之外,没有任何约数)

题型3:公约数与公倍数

此类只需要注意:公约数很容易找,写一个for循环(逆序可以节约时间)找出一个i使得两个数对其求余都为0时,这个数就是最大公约数.

最小公倍数就是两个数相乘除以最大公约数,如果按照正常逻辑使用循环找最小公倍数比较困难,用求最大公约数的方式求最小公倍数能使逻辑简单化.

题型4:

posted on   ୯Aliza୬  阅读(32)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示