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