我使用过擦除数筛法来计算正好具有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);
}
答案 0 :(得分:0)
Eratosthenes的筛子用于计算素数。您的代码正确地计算出有少于379999个质数的37386个质数。应该可以修改代码以查找正好具有三个除数而不是一个除数的数字,但是我将把它留给提出要求的人来做。