数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 2264|回复: 0

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

[复制链接]
发表于 2020-12-27 10:27 | 显示全部楼层 |阅读模式
本帖最后由 chanji 于 2020-12-27 10:30 编辑
  1. #include <iostream>

  2. #include <cmath>

  3. using namespace std;

  4. const int n = 10000;

  5. int isPrime(int n);

  6. int main()

  7. {

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

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

  10.             int count = 1;

  11.             int sum = 0;

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

  13.                  if(j % 2 != 0) {

  14.                      sum = sum + count;

  15.                  }                                                                                 

  16.                  count = count * 2;

  17.                   j = j / 2;

  18.             }

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

  20.                   cout << i << "  " << sum << endl;

  21.              }

  22.           }

  23.     }

  24.    return 0;

  25. }

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

  27. {

  28.     if(n < 2) return false;
  29.    
  30.     for(int i = 2; i <= sqrt(n); i++) {

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

  32.             return false;

  33.     }

  34.     return true; // 是素数

  35. }
复制代码

运行结果:

注:程序中用到的变换实际背景是一堆小方块排成一排,对折,把不能对折的拿出来,直到两两对折。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2024-4-18 13:01 , Processed in 0.077149 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表