我试图打印少于100的最后三个质数。如果我打印少于10的质数,则它工作正常。但是,当我尝试打印少于100张时,它无法正常工作。我不知道为什么您能告诉我一种打印后三个数字的有效方法吗?

int[] a = new int[100];
int flag=0,c=0,i=2,j=2;
int n=10;
while(i <= n)
{
    flag=0;
    while(j<=i/2)
    {
        if(i%j==0)
        {
            flag=1;
            break;
        }
        j++;
    }
    if(flag==0)
    {
        a[c]=i;
        c++;
    }
    i++;
}
for(i=0;i<c;i++)
{
    c--;
    System.out.print(a[c]+" ");
}

最佳答案

首先,您必须重新初始化变量j和标志。

while(i <= n) {
    //...

    if(flag==0) {
        a[c]=i;
        c++;
     }
    i++;
    j = 2;
}


您可以这样显示最后三个素数

for(i = c-1; i >= c-3; i--) {
    System.out.print(a[c]+" ");
}


或者您可以使用此代码

int numToShow = 3, n = 100;
boolean isPrime = true;

while(n > 1 && numToShow > 0) {
    for (int j = 2; j <= (int) Math.sqrt(n) && isPrime; j++) {
        if(n % j == 0) {
            isPrime = false;
        }
    }

    if (isPrime) {
        System.out.print(n + " ");
        numToShow--;
    }

    isPrime = true;
    n--;
}

关于java - 程序查找最后三个质数小于100,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59233991/

10-08 23:46