求逆向超级素数

摘要:
一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数,且数p的各位数字均不为零,则称该数p为逆向超级素数。例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。
一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:1不是素数),
且数p的各位数字均不为零,则称该数p为逆向超级素数。
例如,617,17,7都是素数,因此617是逆向超级素数,
尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。

/**

*@author xiao xiao an

*@Time 2014/5/4

*@Content To find super prime

*

* SuPrime.c

*/

#include<stdio.h>

#include<Math.h>

//判断是否有0 int IsZero(int n)

{

int value;

int i;

for(i=0;i<3;i++)

{

value = n%10;

n = n/10;

if(value == 0)

{

return 0;

}

}

return 1;

}

//判断是不是素数

int IsPrime(int n)

{

/** 判断是不是素数

* 如果是素数返回1

* 如果不是素数返回0

*/

int i;

int value = n;

for(i = 2 ; i<=sqrt(value) ; i++)

{

if(value%i == 0)

{

//如果数被整除说明不是素数,返回0

return 0;

}

}

//如果上面都不符合,说明没有被整除,说明是素数,返回1

return 1;

}

int IsSuprime(int n) {

/*

判断abc ,bc,c是否都是素数

*/

int value = n;

if(IsZero(value))

{

int single = value % 10; //最高位去掉2位

int ten = value%100;//最高位去掉1位

if(IsPrime(single)&&IsPrime(ten))//如果都是素数则返回1

return 1;

}

return 0;

}

int main() {

//统计逆向超级素数的个数

int numberOfSuperprime = 0;

printf("输出所有逆向超级素数: ");

int i;

//求出【100,999】内的所有超级素数

for(i = 100 ; i < 1000 ; i++)

{

//判断是否是素数

if(IsPrime(i))

{

//如果是素数,判断是否是逆向超级素数

if(IsSuprime((i)))

{

//打印所有素数

printf("%d ",i);

//个数+1

numberOfSuperprime++;

}

}

}

printf(" 逆向超级素数的个数为%d",numberOfSuperprime);

return 0;

}

免责声明:文章转载自《求逆向超级素数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇elementui中自定义Select选择器样式自定义django实现动态菜单的方式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

素数环问题---回溯

素数环 题目:输入正整数n,把整数1。2,3,...,n组成一个环。使得相邻两个整数之和均为素数。 输出时从整数1開始逆时针排列。 同一个环应该恰好输出一次。n<=16 分析:首先运用普通方法(生成测试法) 1 #include<iostream> 2 #include<cstdio> 3 #include<cstrin...

素数筛法知识点整理

素数的定义:除了1和它本身之外,不能被其他整数整除。 一、判定一个正整数n是否为素数的方法: ①定义法:枚举2~n-1这n-2个正整数,如果它们均不能整除n,则可断定n为素数。代码如下:时间复杂度为O(n),如果n为10^9,就不能用此方法。 1 bool is_prime(int n){ 2 if(n==1)return false; 3...

素数算法大全

注意: 如果没有特殊说明, 以下讨论的都是针对n为素数时的时间复杂度 1. 根据概念判断: 如果一个正整数只有两个因子, 1和p,则称p为素数. 代码: bool isPrime(int n) { if(n < 2) return false; for(int i = 2; i < n; ++i) if...

数论部分第一节:素数与素性测试【详解】

数论部分第一节:素数与素性测试     一个数是素数(也叫质数),当且仅当它的约数只有两个——1和它本身。规定这两个约数不能相同,因此1不是素数。对素数的研究属于数论范畴,你可以看到许多数学家没事就想出一些符合某种性质的素数并称它为某某某素数。整个数论几乎就围绕着整除和素数之类的词转过去转过来。对于写代码的人来说,素数比想像中的更重要,Google一下Bi...

(基本数论)素数筛选与判断

1、朴素判断素数 这种方法就是将给出的数判断能否找到处1以及它本身以外的因数。 代码样例 #include <bits/stdc++.h> using namespace std; bool f(int n){ for(int i=2; i*i <= n; i++){ if(n%i == 0)...

超级素数幂--全国模拟(一)

[编程题] 超级素数幂 时间限制:1秒 空间限制:32768K 如果一个数字能表示为p^q(^表示幂运算)且p为一个素数,q为大于1的正整数就称这个数叫做超级素数幂。现在给出一个正整数n,如果n是一个超级素数幂需要找出对应的p,q。  输入描述: 输入一个正整数n(2 ≤ n ≤ 10^18)     输出描述: 如果n是一个超级素数幂则输出p,q,以空格...