第二次编程作业

来源:互联网 发布:最优化方法修订版答案 编辑:程序博客网 时间:2024/05/15 07:20

1.判断一个正整数是否为质数的算法:

import java.util.Scanner;//判断一个正整数是否为质数public class test1 {public static void main(String[] args) {long a = 0;System.out.println("请输入一个正整数:");Scanner sc = new Scanner(System.in);a = sc.nextLong();long b = isPrime(a);if (b == 0) {System.out.println("此数为质数。");} else {System.out.println("此数为非质数。");}}//返回0为质数,1为非质数static long isPrime(long a) {long maxa = (long)Math.sqrt(a) + 1;long bianliang = 2;while (bianliang != maxa) {if (a%bianliang == 0)return 1;bianliang ++;}return 0;}}




2.随机生成一个n bit位的长整数:

import java.util.Scanner;//仅支持输出小于(不等于)20位的随机数,受函数为返回long值的限制public class test2 {public static void main(String[] args) {int n = 0;System.out.println("请输入想生成的随机数的位数:");Scanner sc = new Scanner(System.in);n = sc.nextInt();System.out.println("随机数:" + createRndInteger(n));}// 随机生成一个n bit位的长整数。函数签名如下static long createRndInteger(int n) {String s = "";if (n == 1) {if (Math.random() < 0.5)s += "1";else {s += "0";}} else {s += "1";int a = 1;while (a < n) {if (Math.random() < 0.5)s += "1";else {s += "0";}a++;}}return Long.parseLong(s);}}




3.随机生成一个n bit位的长质数:

import java.util.Scanner;//随机生成一个质数public class test3 {public static void main(String[] args) {int a = 0;System.out.println("请输入想获得的随机质数的长度:");Scanner sc = new Scanner(System.in);a = sc.nextInt();System.out.println("随机质数为:" + createRndPrime(a));}static long createRndPrime(int n) {long P = 1;long a = 0;while (P == 1) {a = createRndInteger(n);//产一个n位长的二进制long型数a = X10change(a);//转换成十进制long型数P = isPrime(a);//判断是否为质数}return Long.parseLong(Long.toBinaryString(a));//将得到的十进制质数转换回二进制}//数制的转换程序(二进制转换十进制)static long X10change(long a) {String s = Long.toString(a);return Integer.valueOf(s, 2).longValue();}//返回0为质数,1为非质数static long isPrime(long a) {long maxa = (long)Math.sqrt(a) + 1;long bianliang = 2;while (bianliang != maxa) {if (a%bianliang == 0)return 1;bianliang ++;}return 0;}// 随机生成一个n bit位的长整数。static long createRndInteger(int n) {String s = "";if (n == 1) {if (Math.random() < 0.5)s += "1";else {s += "0";}} else {s += "1";int a = 1;while (a < n) {if (Math.random() < 0.5)s += "1";else {s += "0";}a++;}}return Long.parseLong(s);}}



待续。。

0 0