第二次编程作业
2014-03-19 18:02
323 查看
1.判断一个正整数是否为质数的算法:
2.随机生成一个n bit位的长整数:
3.随机生成一个n bit位的长质数:
待续。。
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); } }
待续。。
相关文章推荐
- 第二次作业--编程
- 第二次编程作业
- 第六次作业--结对编程第二次
- 第六次作业--结对编程第二次
- 第六次作业--结对编程第二次
- 通信网络编程第二次作业
- 高级编程基础第二次作业——列表的学习
- 第六次作业--结对编程第二次
- 第二次作业-编程
- 机器学习技法第二次作业编程题1
- 第二次编程作业
- 第二次编程作业-咖啡角机器人
- 第六次作业--结对编程第二次作业
- 第六次作业--结对编程第二次
- 第二次编程作业:判断一个正整数是否为质数的算法和 随机生成一个n bit位的长整数
- 第二次作业--结队编程1 (101 109)
- 第六次作业--结对编程第二次
- 第二次寒假作业的编程题
- 第二次作业之编程题(未完待续)
- 第六次作业--结对编程第二次