在1~2000的整数中随机地取一个数,问取到的整数即不能为6整除,又不能被8整除的概率是多少?
public class GuDianGaiLv {
public static void main(String[] args){
System.out.println(divisibleProbability(1l,2000l,new Long[]{6l,8l}));
}
//在1~2000的整数中随机地取一个数,问取到的整数即不能为6整除,又不能被8整除的概率是多少?
public static ResultDivisible divisibleProbability(Long beginNum, Long endNum, Long divisibleNum){
Long num = endNum + 1 - beginNum;
Long count = num/divisibleNum;
return new ResultDivisible(num,count);
}
public static void main(String[] args){
System.out.println(divisibleProbability(1l,2000l,new Long[]{6l,8l}));
}
//在1~2000的整数中随机地取一个数,问取到的整数即不能为6整除,又不能被8整除的概率是多少?
public static ResultDivisible divisibleProbability(Long beginNum, Long endNum, Long divisibleNum){
Long num = endNum + 1 - beginNum;
Long count = num/divisibleNum;
return new ResultDivisible(num,count);
}
public static double divisibleProbability(Long beginNum,Long endNum,Long[] divisibleNum){
//1-pa-pb+pab=1-(pa+pb-pab)
ResultDivisible pa=divisibleProbability(beginNum,endNum,divisibleNum[0]);
ResultDivisible pb=divisibleProbability(beginNum,endNum,divisibleNum[1]);
ResultDivisible pTemp=Utils.addResultDivisible(pa,pb);
ResultDivisible pTemp2=divisibleProbability(beginNum,endNum,Utils.leastCommonMultiple(divisibleNum[0],divisibleNum[1]));
return 1-pTemp.getValue()+pTemp2.getValue();
}
public class ResultDivisible {
private Long num;
private Long count;
public Long getNum() {
return num;
}
public void setNum(Long num) {
this.num = num;
}
public Long getCount() {
return count;
}
public void setCount(Long count) {
this.count = count;
}
public ResultDivisible(Long num, Long count) {
this.num = num;
this.count = count;
}
public ResultDivisible() {
}
public double getValue(){
return (count+0.00)/num;
}
}
public class Utils {
public static ResultDivisible subtractionResultDivisible(ResultDivisible pa,ResultDivisible pb){
return new ResultDivisible(pa.getNum()*pb.getNum(),pa.getCount()*pb.getNum()-pb.getCount()*pa.getNum());
}
public static ResultDivisible addResultDivisible(ResultDivisible pa,ResultDivisible pb){
return new ResultDivisible(pa.getNum(),pa.getCount()+pb.getCount());
}
public static ResultDivisible mulResultDivisible(ResultDivisible pa,ResultDivisible pb){
return new ResultDivisible(pa.getNum()*pb.getNum(),pa.getCount()*pb.getCount());
}
}
/*
* @description 计算最小公倍数
* @return
* @author
* @date 2021/1/17 14:28
**/
public static Long leastCommonMultiple(Long num1,Long num2){
Long smaller,lagger;
if(num1>num2){
smaller=num2;
lagger=num1;
}else{
smaller=num1;
lagger=num2;
}
for(Long i = 1L; i<=smaller; i++){
Long temp=lagger*i;
if(temp%smaller==0){
return temp;
}
}
return null;
}
运行结果为0.75
gitub地址