2.1: 判断一个正整数是否为质数的算法。函数签名如下
int isPrime(long a)
输入:一个长整数a
输出:返回1(为质数),返回0(非质数)
import java.util.Scanner;
public class JavaApplication1 {
public static void main(String[] args) {
Scanner scr=new Scanner(System.in);
long i =scr.nextLong();
if( isPrime( i)==1)
System.out.println(i+"是素数");
else System.out.println(i+"不是素数");
}
public static int isPrime(long i){
int flag=0;
if ( i % 2 == 0) { // 质数是除2以外的奇数
long sqrt = (long) Math.sqrt(i);// 一个数如果是合数,那么它的所有的因子不超过它的开方
for (int j = 2; j < sqrt; j++) {
if (i % j == 0)
{ flag=0; break; }
flag=1;
}
}
return flag;
}
}
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 chengfa {
public static void main(String[] args) {
Scanner ins=new Scanner(System.in);
int n=ins.nextInt();
System.out.println(createRndInteger( n));
}
public static long createRndInteger(int n){
System.out.println("intput a int ");
/* double a = Math.pow(2, n-1);
double b = Math.pow(2, n-1)-1;
double r=Math.random();
int L=a+b*r;
String B=Integer.toHexString(L);
*/
int a =(int)Math.pow(2, n);
int b=(int)Math.pow(2, n-1);
Random r=new Random();
long l=(long)r.nextInt(a-b)+b;
System.out.println(l);
return l;
}
}