半小时掌握素数(质数),水仙花数,回文数

1.寻找素数便捷算法

如果一个数不是素数,可以写成a*b的形式其中要么a=b,要么a、b一大一小,只要找出ab中较小的一个数就行,那么如何找全,我们要找到ab较小的数的最大值为sqrt(a),构造循环

bool f=1;//便于对素数进行标记
for(i=2;i<=sqrt(n);i++)//必须有个等号不然4 9都会被看成质数
{
if(n%i==0)
{
    f=0
    break;
}
}
if(f==1)//注意sqrt返回值是一个double型
printf("%d",i);

2.寻找水仙花数

水仙花数的特点是每个位置的三次方相加等于他本身

假设是一个三位数,最关键的就是将数字给分离

for(i=1;i<=n;i++)
{
int a,b,c;
a=i/100;
b=(i-a*100)/10;//不断砍掉最高位
c=i-a*100-b*10;
if(i==pow(a,3)+pow(b,3)+pow(c,3))
printf("%d",i);
}

3.寻找回文数

正读=倒读 注意strlen计算的是字符串的实际长度,不包括\0

for(i=1;i<=n;i++)
{
int x=0;c=i;
while(c!=0)
{
x=x*10+c%10;//每次都取该数的最后一位,不断乘10
c=c/10;//不断砍掉最后一位
}
if(x==i)
printf("%d",i);
}

比如321倒过来是(1*10+2)*10+3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值