小于N的连续复合数的最大序列
我是java新手,我正在寻找一个优化的代码,用于查找N=9999999时小于N的连续复合数的最大序列。我希望这个程序在不到1分钟的时间内找到它。下面是我已经编写的程序,它在1分钟内找到N=35000000的序列
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
int n=input.nextInt();
int A[]=new int[n];
int B[]=new int[n];
int cA=0;
int cB=0;
for(int j=1;j<=n;j++)
{
int c=0;
for(int d=2;d<=Math.floor(Math.sqrt(j));d++)
{
if(j%d==0)
break;
else
c++;
continue;
}
if(c==Math.floor(Math.sqrt(j))-1)
{
A[cA]=j;
cA++;
}
}
int M=0;
for(int x=0;x<=n-2;x++)
{
if(A[x+1]-A[x]>=M)
{
B[0]=A[x]+1;
B[1]=A[x+1]-1;
}
M=Math.max(A[x+1]-A[x],M);
}
System.out.println("The largest sequence of composite numbers lower than "+n+" is from "+B[0]+" to "+B[1]+" ("+(B[1]-B[0]+1)+" numbers).");
}
}
还有一个非常优化的算法,我可以用long替换int,它会尽快找到序列吗
共 (0) 个答案