程序编写。 (30分钟-3小时)
实现RSA算法
(书籍P40)
。同学们至少实现2.1 与 2.2;实现RSA完整算法的同学,总成绩的基础上加10分。请大家把编程思想与程序实现(源码),发表在CSDN博文上。
2.1: 判断一个正整数是否为质数的算法。函数签名如下
int isPrime(long a)
输入:一个长整数a
输出:返回1(为质数),返回0(非质数)
代码如下
public int main() {
Scanner in=new Scanner(System.in);
System.out.print("请输入一个正整数: ");
int n = in.nextInt();
int b=0;
for(int i=2;i<Math.sqrt(n);i++){
if(n%i==0)
return b;
else
b=1;
}
return b;
}
2.2: 随机生成一个n bit位的长整数。函数签名如下
long createRndInteger(int n)
输入:随机数bit位的长度为n(解释:3bit位,则最大为111,最小为100;n bit位,则该数字二进制长度为n)
输出:返回该随机数
代码如下
import java.util.Random;
import java.util.Scanner;
public class create {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("请输入n的值:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
System.out.print(createRndInteger(n));
}
static long createRndInteger(int n){
int min = (int) Math.pow(2, n-1);
Random random = new Random();
int p = random.nextInt(min) + min;
return p;
}
}