【问题标题】:given a number n , we have to find out such numbers that are less than or equal to n, that have exactly 3 divisors给定一个数 n ,我们必须找出小于或等于 n 且恰好有 3 个除数的数
【发布时间】:2020-01-01 22:17:02
【问题描述】:

我使用了埃拉托色尼筛法来计算具有恰好 3 个除数且小于或等于 n 的数字,其中 n 是给定的数字。

这个代码的问题是它给出了 n=999999 的答案 37386,但正确的答案是 168

public static void main (String[] args) throws java.lang.Exception
{
    Scanner scn =new Scanner(System .in);
    print("enter the prime no");
    int n= scn.nextint();
    int arr[]= new int[n+1];
    for(int i=2;i<arr.length;i++)
    {
        arr[i]=1;
    }

    for(int i=2;i*i<=n;i++)
    {
        if(arr[i]==1)
        {

            for(int p=2;p*i<=n;p++)
            {
                arr[p*i]=0;
            }
        }
    }

    int count=0;
    for(int i=2;i<=n;i++)
    {
        if(arr[i]==1&&i*i<n)
        {
            count++;
        }
    }

    System.out.print(count);
}

code for calculating numbers that have exactly 3 divisors

【问题讨论】:

  • 欢迎来到 Stackoverflow。请记住,这不是一个通用的帮助论坛,您应该为您的问题做一些工作。彻底通读how to ask a good question,并更新您的帖子,以便您的代码格式简洁,并描述您已经尝试/分析的内容以找出问题所在,即使您实际上无法解决它.如果没有迹象表明您甚至试图找出问题所在,那么这通常是您需要做的第一个请求。
  • 考虑数字 4 它有除数 1,2,4(3 除数) 现在考虑数字 9 它有除数 1,3,9 。考虑数字 25 它有除数 1,5,25 这些是一些正好有 3 个除数的数字
  • @DeepakMishra 啊,我明白了。所以基本上它是素数的平方。

标签: java primes


【解决方案1】:

埃拉托色尼筛法用于计算素数。您的代码正确计算出有 37386 个质数小于 999999。应该可以修改代码以找到恰好具有三个除数而不是一个除数的数字,但我将把它作为练习留给提问者。

【讨论】:

  • “但我会把它作为练习留给提问者” - 那么为什么要回答呢?
  • 先生,我在代码中发现了我的错误,但无法得到它
  • ideone.com/bGtlf6 错误在最后一个 for 循环代码中,但我不明白为什么
  • 小于999999的素数是78498。查看this
猜你喜欢
  • 1970-01-01
  • 2016-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多