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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 判断一个数是否为素数c#(判断一个数是否为素数的算法)

    C++判断一个数是否为素数算法C++判断一个数是否为素数算法完整源码(定义,实现,main函数测试)C++判断一个数是否为素数算法完整源码(定义,实现,main函数测试)#include<cassert>#include<iostream>template<typenameT>boolis_prime(Tnum){boolresult=true;if(num<=1){return0;

    2022年4月15日
    41
  • 微型计算机硬件系统的性能主要取决6,大学计算机基础单选试题「附答案」

    微型计算机硬件系统的性能主要取决6,大学计算机基础单选试题「附答案」大学计算机基础单选试题「附答案」一、单选题1.世界上首次提出存储程序计算机体系结构的是(D)A.莫奇莱B.艾仑·图灵C.乔治·布尔D.冯·诺依曼2计算机诞生于(B)A.1941年B.1946年C.1949年D.1950年3、世界上第一台电子数字计算机采用的主要逻辑部件是(A)A.电子管B.晶体管C.继电器D.光电管4、下列叙述正确的是(D)A.世界上第一台电子计算机ENIAC…

    2022年6月28日
    57
  • linux服务器,卸载tensorflow CPU 安装PGU版

    linux服务器,卸载tensorflow CPU 安装PGU版linux服务器,卸载tensorflowCPU安装PGU版写在前面之前用的和学习的都是pytorch框架,现在要运行一个keras的代码,得安装tensorflow和keras,按一个教程,直接在pycharm里setting,点那个+很快就装好了tensorflow和keras,运行了几次发现运行特别慢,用nvidia-smi查看,发现根本没有用pgu跑,一番查找,最后发现安装的tensorflow本身是按CPU跑的,要用GPU跑,得安装tensorflow-gpu。以下主要参考了https

    2022年6月22日
    48
  • PMM

    PMM

    2021年5月28日
    140
  • 红队靶机实战(2)

    0x00前言[手动滑稽][手动滑稽]一天一靶机生活充实而有趣,打算这几天把红日的几个靶机都给撸个遍。打起来还挺有意思。0x01环境搭建至于网卡配置的话,可以直接看官方的讲解怎么去配,打靶

    2021年12月11日
    60
  • idea 2021激活码[在线序列号][通俗易懂]

    idea 2021激活码[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    119

发表回复

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

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