C++反质数问题

C++反质数问题,第1张

什么是质数?就是约数只有1和它本身的数,那什么又是约数,a如果能整除b,那么a就是b的约数。

这里,如何判断是否为质数呢?比销胡如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是可逆素数!

*/


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12560761.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存