查找以 1 结尾的输入的下一个素数
Finding next prime no of the input which ends with 1
我试图找到下一个以 1.This 结尾的素数,仅显示下一个 prime.But 我想打印下一个以 1 结尾的素数。
int num=103;
for(l=num+1;;l++)
{
for(k=2;k<l;k++)
{
if(l%k==0)
break;
}
if(k==l)
{
System.out.println("Next prime no is:"+l);
break;
} }
我们可以做这样的事情吗?
int num=103;
for(l=num+1;;l++)
{
if(l%10==1)
{
for(k=2;k<l;k++)
{
if(l%k==0)
break;
}
if(k==l)
{
System.out.println("Next prime no is:"+l);
break;
}
}
}
我认为你可以比@ShashankGupta 建议的 "add 1 and test every number that follows if it ends in 1 and is a prime" 做得更好。一旦我们找到下一个以“1”结尾的数字(使用算术,而不是循环),我们只需要从那时起检查每十分之一的数字:
public static int next_one_prime(int number)
{
// next number ending in '1'
number += 1 + Math.floorMod(-number % 10, 10);
outer: while (true)
{
for (int k = 3; k * k <= number; k += 2)
{
if (number % k == 0)
{
number += 10;
continue outer;
}
}
return number; // next prime ending in '1'
}
}
我试图找到下一个以 1.This 结尾的素数,仅显示下一个 prime.But 我想打印下一个以 1 结尾的素数。
int num=103;
for(l=num+1;;l++)
{
for(k=2;k<l;k++)
{
if(l%k==0)
break;
}
if(k==l)
{
System.out.println("Next prime no is:"+l);
break;
} }
我们可以做这样的事情吗?
int num=103;
for(l=num+1;;l++)
{
if(l%10==1)
{
for(k=2;k<l;k++)
{
if(l%k==0)
break;
}
if(k==l)
{
System.out.println("Next prime no is:"+l);
break;
}
}
}
我认为你可以比@ShashankGupta 建议的 "add 1 and test every number that follows if it ends in 1 and is a prime" 做得更好。一旦我们找到下一个以“1”结尾的数字(使用算术,而不是循环),我们只需要从那时起检查每十分之一的数字:
public static int next_one_prime(int number)
{
// next number ending in '1'
number += 1 + Math.floorMod(-number % 10, 10);
outer: while (true)
{
for (int k = 3; k * k <= number; k += 2)
{
if (number % k == 0)
{
number += 10;
continue outer;
}
}
return number; // next prime ending in '1'
}
}