有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

小于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) 个答案