我得到了以下用伪代码编写的方法
for i=1 to floor(n/2)
if arr[i] != 0 then
for(j=2 to floor(n/i)
arr[i*j] = 0
我需要找到输出并证明它确实是输出。
到目前为止,我试图用Java编写代码,并尝试使用不同的输入和数组大小,但无济于事。如果有帮助的话,放在这里:
public class Checking
{
private static int method(int[] A,int n)
{
for (int i=1;i<=java.lang.Math.floor(n/2);i++)
{
if(A[i] != 0)
{
for(int j=2;j<=java.lang.Math.floor(n/i);j++)
{
A[i*j]=0;
System.out.println("The index ofA["+i*j+"] became "+A[i*j]);
}
}
//System.out.print(", "+A[i]);
}
for (int i=1;i<=java.lang.Math.floor(n/2);i++)
{
System.out.print(", "+A[i]);
}
return 0;
}
public static void main(String[] args)
{
int[] A = {-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23};
System.out.println(method(A,20));
}
}
谢谢。
您可以更改以下内容:
在您的主要方法中删除
System.out.println(method(A,20));
因为当您返回0时它将始终显示0;来自method()。
当您在method()中打印所有内容时,更改以下内容(因为它不打印完整的数组,而是从索引1(缺少索引0)到楼n / 2,]]
for (int i=1;i<=java.lang.Math.floor(n/2);i++) { System.out.print(", "+A[i]); }
到
for (int i=0;i<A.length; i++) { System.out.print(", "+A[i]); }
所以您可以打印整个数组。
为简单起见,您可以使用Array的print方法来打印没有for循环的数组
System.out.println(Arrays.toString(A));