int型转换为long型遇到的一个小问题

int型转换为long型遇到的一个小问题LeetCode上有一道题:给出一个数n,求(0,n)之间素数的个数。然后我采用埃拉托斯特尼筛法在每次找到一个素数时,将能被素数整除的数排除掉。但是,在进行int类型转换的时候会报:java.lang.ArrayIndexOutOfBoundsException代码如下:publicintcountPrimes(intn){boolea…

大家好,又见面了,我是你们的朋友全栈君。

        LeetCode上有一道题:给出一个数 n ,求(0, n)之间素数的个数。然后我采用埃拉托斯特尼筛法在每次找到一个素数时,将能被素数整除的数排除掉。但是,在进行int类型转换的时候会报:java.lang.ArrayIndexOutOfBoundsException

代码如下:

public int countPrimes(int n) {
        boolean[] notPrimes = new boolean[n + 1];
        int count = 0;
        for(int i = 2; i < n; i++){
            if(notPrimes[i]){
                continue;
            }
            count++;
            //for(long j = (long) (i * i); j < n; j += i) 会报错
            for(long j = (long)i * i; j < n; j += i){
                notPrimes[(int)j] = true;
            }
        }
        return count;
    }

原因是:java中,int类型为32位,范围 -2^31-1~2^31,当超出这个范围会发生数据溢出,得到错误的数据,然后再转型为long型。所以是先转型再计算。 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135675.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python pytest测试框架详解

    Python pytest测试框架详解pytest介绍:pytest是一个非常成熟的全功能的Python测试框架:1.简单灵活,容易上手2.支持参数化3.测试用例的skip和xfail,自动失败重试等处理4.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+request)5.pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-allure(完美html测试报告生成)、pytest-xdist(多CPU分发)等6.可以很好的和

    2025年5月22日
    3
  • MyBatis 批量插入数据的 3 种方法

    MyBatis 批量插入数据的 3 种方法批量插入功能是我们日常工作中比较常见的业务功能之一 今天来一个 MyBatis 批量插入的汇总篇 同时对 3 种实现方法做一个性能测试 以及相应的原理分析 先来简单说一下 3 种批量插入功能分别是 循环单次插入 MP 批量插入功能 原生批量插入功能 准备工作开始之前我们先来创建数据库和测试数据 执行的 SQL 脚本如下 创建数据库 SETNAMESutf

    2025年6月20日
    3
  • [html]js无缝循环滚动图片示例代码

    [html]js无缝循环滚动图片示例代码html代码<!–轮播图–><divid=”banner”><ul><li><ahref=”YunNan.html”><imgsrc=”./微信图片_20200621003327.jpg”>1</a></li><li><ahref=”Switzerland.html”><imgsrc=”./微信图片_20200621003339.

    2022年7月18日
    14
  • 日志格式规范「建议收藏」

    日志格式规范「建议收藏」1简介在程序中写日志是一件非常重要,但是很容易被开发人员忽视的地方。写好程序的日志可以帮助我们大大减轻后期维护压力。在实际的工作中,开发人员往往迫于巨大时间压力,而写日志又是一个非常繁琐的事情,往往没有引起足够的重视。开发人员应在一开始就养成良好的日志撰写习惯,并且应在实际的开发工作中为写日志预留足够的时间。1.1日志的作用一般程序日志出自下面几个方面的需求:1.记…

    2022年5月1日
    62
  • css 自定义滚动条样式

    css 自定义滚动条样式我遇到的场景:对于iframe窗口,自带滚动条是整个窗口的大小。有时需要顶部或底部固定,则滚动条不应该触碰到顶部或底部。那么首先打开iframe时应该去掉滚动条scrolling="n

    2022年7月2日
    25
  • PHP如何实现百万级数据导出

    PHP如何实现百万级数据导出

    2021年11月3日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号