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型。所以是先转型再计算。 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • caffeine缓存应用场景_caffeinecacheload

    caffeine缓存应用场景_caffeinecacheload在本文中,我们来看看Caffeine—一个高性能的Java缓存库。缓存和Map之间的一个根本区别在于缓存可以回收存储的item。回收策略为在指定时间删除哪些对象。此策略直接影响缓存的命中率—缓存库的一个重要特征。Caffeine因使用WindowTinyLfu回收策略,提供了一个近乎最佳的命中率。填充策略(Population)Caffeine为我们提供了三种填充策略:手动、同步和异步手动加载(Manual)Cache<String,Object>

    2022年10月26日
  • 成功解决TypeError: Cannot cast array data from dtype(‘float64’) to dtype(‘U32’) according to the rule ‘

    成功解决TypeError: Cannot cast array data from dtype(‘float64’) to dtype(‘U32’) according to the rule ‘成功解决TypeError:Cannotcastarraydatafromdtype(‘float64’)todtype(‘<U32’)accordingtotherule’目录解决问题解决思路解决方法解决问题TypeError:Cannotcastarraydatafromdtype(‘float64’)todtype(‘<U32’)accordingtotherule’safe’…

  • Linux 下的make命令与Makefile

    Linux 下的make命令与Makefile概述博客内容包含linux下make命令的使用与makefile的书写规则等,希望通过本文档使读者对make命令makefile文件有进一步了解,由于鄙人经验学识有限文档中会有描述不准确以及理解偏差,欢迎读者指正。fythons@sina.com从一只猫说起hellokitty linux系统中的make命令与makefile文件make与makefile 在linux系统…

  • Java集合框架关系图谱

    Java集合框架关系图谱Java集合是用于存储数量不等的对象的容器,还可以保存具有映射关系的关联数组,Collection是集合接口,它提供了对集合对象进行基本操作的通用接口方法。Java集合大致分为下面四种类型:List,Set,Queue,Map。List代表有序,可重复集合,Set代表无序,不可重复集合,Queue代表队列集合,Map代表具有映射关系的集合。Java集合主要有Collection和Map接口派生,…

  • microsoft edge无法连接到代理服务器(ie代理服务器错误)

    电脑里有谷歌浏览器也有系统自带的Microsoftedge浏览器,谷歌浏览器可以上网,edge不能上网,出现无法连接到代理服务器的字样。解决方法:方法1、直接根据当前浏览器页面中的“打开代理设置”,(应该是叫这个名字),直接跳到代理界面,把“自动检测设置”按钮打开。重启浏览器。就OK了。 方法2、打开浏览器的设置按钮,在最后一行找到“设置”,点进去后,找到“高级设置”,点击“查看高级设置”,在找…

  • 微信浏览器到底是什么内核?

    微信浏览器到底是什么内核?

    2021年10月23日

发表回复

您的电子邮箱地址不会被公开。

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