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