从一个数对列中找出素数对用于RAS加密的C++程序

#include <iostream>

#include <cmath>

using namespace std;

const int n = 10000;

int isPrime(int n);

 

int main()

{

    for(int i = 2; i < n;++ i) {//产生10000个数队列

        if(isPrime(i)) { //判断变换前的数是否为素数

            int count = 1;

            int sum = 0;

            for(int j = i;j > 1;) {//对数进行某种特定的变换

                 if(j % 2 != 0) {

                     sum = sum + count;

                 }                                                                                  

                 count = count * 2;

                  j = j / 2;

            }

             if(isPrime(sum)) {//判断变换后的数是否为素数,如果是素数,则输出

                  cout << i << "  " << sum << endl;

             }

          }

    }

        

   return 0;

}

 

int isPrime(int n) //判断一个数是否为素数的函数

{

    if(n < 2) return false;

   

    for(int i = 2; i <= sqrt(n); i++) {

        if((n % i) == 0) // 如果能被除了1和它本身的数整除,就不是素数

            return false;

    }

 

    return true; // 是素数

}

posted on 2020-04-30 12:42  飞凤颖悟绝伦  阅读(218)  评论(0编辑  收藏  举报

导航