给定数字n,我们必须找出小于或等于n的正好有3个除数的数字

时间:2019-08-28 16:24:29

标签: java primes

我使用过擦除数筛法来计算正好具有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

1 个答案:

答案 0 :(得分:0)

Eratosthenes的筛子用于计算素数。您的代码正确地计算出有少于379999个质数的37386个质数。应该可以修改代码以查找正好具有三个除数而不是一个除数的数字,但是我将把它留给提出要求的人来做。