我试图打印少于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/