1 条题解

  • 0
    @ 2023-6-11 12:19:06

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    
    bool sushu(int n){
    	int i;
    	if(n <= 1) return false; 
    	for(i = 2;i <= sqrt(n);i++){
    		if(n % i == 0){
    			return false;
    		}
    	}
    	return true;
    }
    
    int main(){
    	int n,i,c = 0,ma = 0;
    	cin>>n;
    	for(i = 2;i <= n;i++){
    		if(sushu(i) == false){
    			c++;
    		}else{
    			if(c > ma){
    				ma = c;
    			}
    			
    			c = 0;
    		}
    		
    		if(i == n) ma = max(c,ma);
    	}
    	
    	cout<<ma;
    }
    
    
    

    Java :

    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main {
    	//素数表
    	static boolean a[] = new boolean[1000001];
    	//记录连续最大数
    	static int b[] = new int[1000001];
    	public static void main(String[] args){
    		Scanner sc = new Scanner(System.in);
    		//将数组元素都设为true
    		Arrays.fill(a, true);
    		int i,j,n=sc.nextInt();
    		//1 的情况定性
    		a[1] = false;
    		b[1] = 1;
    		//从2开始素数表
    		for(i=2;i<=n;i++) {
    			for(j=2;j<=Math.sqrt(i);j++) {
    				if(i%j==0) {
    					a[i] = false;
    					break;
    				}
    			}
    			//a[i]要么false  要么true
    			if(a[i]==false) {
    				if(a[i-1]==false) b[i] = b[i-1] + 1;
    				else b[i] = 1;
    			}
    		}
    		int mx = Integer.MIN_VALUE;
    		for(i=1;i<=n;i++) {
    			mx = Math.max(b[i],mx);
    		}
    		System.out.println(mx);
    		sc.close();
    	}
    }
    
    • 1

    信息

    ID
    2500
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者