题型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时,这个数就是最大公约数.
最小公倍数就是两个数相乘除以最大公约数,如果按照正常逻辑使用循环找最小公倍数比较困难,用求最大公约数的方式求最小公倍数能使逻辑简单化.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步