1 条题解

  • 0
    @ 2023-6-11 12:24:30

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    
    int a[110][110];
    int n,m,c = 0;
    
    bool sushu(int n){
    	if(n <= 1) return false;
    	for(int i = 2;i <= sqrt(n);i++){
    		if(n % i == 0) return false;
    	}
    	return true;
    }
    
    int main() {
    	cin>>n>>m;
    	for(int i = 1;i <= n;i++){
    		for(int j = 1;j <= m;j++){
    			cin>>a[i][j];
    		}
    	}
    	
    	for(int i = 1;i <= n;i++){
    		for(int j = 1;j <= m;j++){
    			if(sushu(a[i][j])&&!sushu(a[i-1][j-1])&&!sushu(a[i-1][j])&&!sushu(a[i-1][j+1])&&!sushu(a[i][j+1])&&!sushu(a[i+1][j+1])&&!sushu(a[i+1][j])&&!sushu(a[i+1][j-1])&&!sushu(a[i][j-1])){
    			   	c++;
    			   }
    		}
    	}
    	
    	cout<<c;
    	return 0;
    }
    
    
    

    Java :

    import java.util.Scanner;
    public class Main {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int num1 = scanner.nextInt();
            int num2 = scanner.nextInt();
            int[][] a = new int[num1][num2];
    //        int[][] b = new int[num1][num2];
            for (int i = 0; i < num1; i++) {
                for(int j = 0;j < num2;j++)
                a[i][j] = scanner.nextInt();
            }
            int count = 0;
            for (int i = 0; i < num1; i++) {
                for(int k = 0;k < num2;k++){
                    if(!isPrime(a[i][k]))continue;
                    else{
                        int flag = 0;
                        for(int j = -1;j < 2;j++){
                            for(int l = -1;l < 2;l++){
                                int x = i + j;
                                int y = k + l;
                                if(x >= 0 && y >= 0 && x < num1 && y < num2 )
                                    if(isPrime(a[x][y]))
                                        flag++;
                            }
                        }
                        if(flag == 1)count++;}
                }
            }
            System.out.println(count);
    
    
    
    
    
    
        }public static void paiXu(int[] a,int length){
            int temp;
            for(int i = 0;i < length - 1;i++){
                for(int k = 0;k < length - i - 1;k++){
                    if(a[k] > a[k + 1]){
                        temp = a[k];
                        a[k] = a[k + 1];
                        a[k + 1] = temp;
                    }
                }
            }
        } public static void paiXud(int[] a){
            int temp;
            for(int i = 0;i < a.length - 1;i++){
                for(int k = 0;k < a.length - i - 1;k++){
                    if(a[k] < a[k + 1]){
                        temp = a[k];
                        a[k] = a[k + 1];
                        a[k + 1] = temp;
                    }
                }
            }
        } public static void paiXux(int[] a){
            int temp;
            for(int i = 0;i < a.length - 1;i++){
                for(int k = 0;k < a.length - i - 1;k++){
                    if(a[k] > a[k + 1]){
                        temp = a[k];
                        a[k] = a[k + 1];
                        a[k + 1] = temp;
                    }
                }
            }
        }
    
        public static int MAX2(int[][] a){
            int max = a[0][0];
            for (int i = 0; i < a.length; i++) {
                for(int j = 0;j < a[0].length;j++){
                    if(max < a[i][j])max = a[i][j];
                }
            }
            return max;
        }public static int MIN2(int[][] a){
            int min = a[0][0];
            for (int i = 0; i < a.length; i++) {
                for(int j = 0;j < a[0].length;j++){
                    if(min > a[i][j])min = a[i][j];
                }
            }
            return min;
        }
        public static int MAX(int[] a){
            int max = a[0];
            for (int i = 0; i < a.length; i++) {
                if(max < a[i]){
                    max = a[i];
                }
            }
            return max;
        }
    
        public static int MIN(int[] a){
            int min = a[0];
            for (int i = 0; i < a.length; i++) {
                if(min > a[i]){
                   min = a[i];
                }
            }
            return min;
        }
        public static int sum(int a){
            int x,s = 0;
            while(a != 0){
                x = a % 10;
                s = s + x;
                a /= 10;
            }
            return s;
        }
        public static boolean isPrime(int a){
            if(a <= 1)return false;
            else
            for(int i = 2;i <= Math.sqrt(a);i++){
                if(a % i == 0)return false;
            }return true;
        }
    
        public static long qiuYu(long i){
            long a;
            a = i % 10;
            return a;
        }
        public static int daoXu(int x){
            int s = 0,m;
            while(x != 0){
                m = x % 10;
                s = s * 10 + m;
                x /= 10;
            }
            return s;
        }
    
        public static int jiaWei(int x){
            int s = 0,m;
            while(x != 0){
                m = x % 10;
                s = s + m;
                x /= 10;
            }
            return s;
        }
    
        public static int fun(int x){
            if(x == 1 || x == 2)return 1;
            else return fun(x - 1) + fun(x - 2);
        }
    }
    
    

    Python :

    n,m=list(map(int,input().split()))
    a=list()
    def zs(n):
        n=int(n)
        if n==1:
            return 0
        elif n==2:
            return 1
        else:
            for i in range(2,int(n**0.5)+1):
                if n%i==0:
                    return 0
            return 1
    fx=[-1,-1,0,1,1,1,0,-1]
    fy=[0,1,1,1,0,-1,-1,-1]
    sum=0
    for i in range(n):
        a.append(list(map(int,input().split())))
        #print(list(map(zs,a[i])))
    for i in range(n):
        for j in range(m):
            f=1
            if zs(a[i][j])==1:
                for k in range(8):
                    x=fx[k]+i
                    y=fy[k]+j
                    if x<n and x>=0 and y<m and y>=0:
                        if zs(a[x][y])==1:
                            f=0
                            break
                if f==1:
                    sum=sum+1
                    #print(a[i][j])
    
    print(sum)
    
            
    
    
    
    
    • 1

    信息

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