chanji 发表于 2020-12-27 10:27

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

本帖最后由 chanji 于 2020-12-27 10:30 编辑

#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; // 是素数

}
运行结果:

注:程序中用到的变换实际背景是一堆小方块排成一排,对折,把不能对折的拿出来,直到两两对折。
页: [1]
查看完整版本: 从一个数对列中找出素数对用于RAS加密的C++程序