这里,如何判断是否为质数呢?比销胡如n,只要从2到n-1,一个个拿他去对n做取模运算(就是求余),如果余数为0,表示能整除,一旦能整除,就不是质数了。
进一步,可以证明,不需要一或斗野直验证到n-1,只要到sqrt(n),也就是n的平方根就可以了。比如16,只要验证到4,因为大于4的约数8在4之前肯定有一个2与之对应。
for(n=2n<=100n++) //这里是对2到100之间每个数都来验证一下是否质数
{
for(i=2i<=sqrt(n)i++) //从2到n的平方根,依次让n对i求余
if(n%i==0) //%是求余运算符,如果为0,就表示能整除,比如4%2就是0,4%3就是1
break//能整除,表示不是质数,不再继续验证
if(i>sqrt(n)) //验证成功了,表示是质数,输衫喊出这个数
cout<<n<<" "
}
思路:需要宴竖袜解决两个问题,一是判断一个数是否是素数,而是求一个数颠倒后的数,可晌激以通过两个函数分别实现。
参考代码:
#include <stdio.h>int isp(int n){//判断一个数是否是素数
int i
for(i=2i<ni++)
if(n%i==0) return 0
return 1
}
int fun(int n){//求一个数的颠倒数
int sum=0
while(n){
sum=sum*10+n%10
n/=10
}
return sum
}
int main ()
{
int n
scanf("%d",&n)
if(isp(n)&&isp(fun(n)))
printf("%d是可逆纤搏素数!",n)
return 0
}
/*
运行结果:
31
31是可逆素数!
*/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)