java每日一题——找出区间内的素数(答案及编程思路)

前言:

学习编程还是要做大量练习呀,不能只学不练,一个题目可以从多个角度去解决,可以全方面巩固知识点。每天记录一点点,daydayup!

题目:判断101-200之间有多少个素数,并输出所有素数

思路:1,定义一个101-200的数值区间;2,从区间内取一个数;3,遍历2到该数的一半数据,看这个数是否能被整除;4,不能被整除为素数,反之不被整除便不是素数。5,输出结果

方法1:利用bootean变量,当该数可以被整除时,输出false;不能整除时输出true,最后统计数量即可

public class sushudemo {

    public static void main(String[] args) {
        System.out.println("素数合计为:"+la(101, 200));

    }
    public static int la(int start,int end){
        int count = 0;
        for (int i = start; i <=end ; i++) {

              boolean flag = true;
            for (int j = 2; j < i /2; j++) {
                if (i % j == 0){
                      flag = false;
                      break;
                }
            }
                if(flag){
                    System.out.println(i);
                    count ++;
                }
        }
        return count;
    }
}

方法2:添加标签选项(OUT),当可以被整除时,使代码跳出循环;最后记录出素数数值

public class sushudemo1 {

    public static void main(String[] args) {
        System.out.println(la(101, 200));
    }
    public static int la(int start, int end) {
        int count = 0;
        OUT:
        for (int i = start; i <= end; i++) {
            for (int j = 2; j < i / 2; j++) {
                if (i % j == 0) {
              continue OUT;
                }
            }
                System.out.println(i);
                count++;
        }
        return count;
    }
}

方法3:使用多个方法,分步骤完成;第一个方法为记录数值区间,第二个方法为看是否能被整除,可以被整除输出false,不能则输出true。

public class sushudemo2 {
    public static void main(String[] args) {
        System.out.println(la(100, 200));
    }
    public static int la (int start,int end){
        int count = 0;
        for (int i = start; i <=end ; i++) {
            if (ll(i)){
                System.out.println(i);
                count++;
            }
        }
 return count;  }
    public static boolean ll(int date){
        for (int i = 2; i <= date/2 ; i++) {
                if (date % i == 0){
                    return false;
                }
                }
      return true;  }

}

 撒花!

产生[0,1]独立均匀分布的随机数序列可以使用线性同余法。具体步骤如下: 1. 选取合适的参数值,包括模数m、乘数a和增量c。其中,m和a应该是相对较大的质数,c可以是任意数。 2. 选取一个初始值X0作为种子数。 3. 依据线性同余法公式生成随机数序列:Xi+1=(aXi+c)mod m。 下面是使用Python实现的代码: ```python m = 2**31-1 # 模数 a = 7**5 # 乘数 c = 0 # 增量 n = 1000 # 随机数数量 X0 = 12345 # 种子数 # 生成随机数序列 rand_list = [] for i in range(n): X0 = (a*X0+c) % m rand_list.append(X0/m) ``` 生成随机数序列之后,我们可以计算其均值并绘制频率分布曲线。代码如下: ```python import matplotlib.pyplot as plt import numpy as np # 计算随机数均值 mean = np.mean(rand_list) print("随机数均值:", mean) # 绘制频率分布曲线 bins = np.arange(0, 1.1, 0.1) plt.hist(rand_list, bins=bins, density=True) plt.plot([mean, mean], [0, 3], color='red') plt.xlabel('随机数区间') plt.ylabel('频率') plt.title('随机数频率分布曲线') plt.show() ``` 运行代码,可以得到如下结果: ``` 随机数均值: 0.5011092597281037 ``` 随机数频率分布曲线如下图所示: ![随机数频率分布曲线](https://i.imgur.com/xn0mLX2.png) 从图中可以看出,随机数的频率分布曲线基本上是一条水平线,表明随机数落在每个子区间内的频率大致相等,符合独立均匀分布的特性。同时,我们也可以看到均值点的位置,它落在0.5的位置,符合随机数在[0,1]区间内的均值为0.5的特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值