【C++题解】1997. 孤独的素数

欢迎关注本专栏《C++从零基础到信奥赛入门级(CSP-J)》

问题:1997. 孤独的素数

类型:二维数组


题目描述:

在一个 n 行 m 列的矩阵王国中,生活着一些整数,其中一些是素数,一些不是素数。如果一个素数的上下左右、左上、右上、左下、右下相邻的数中都没有素数,我们就认为这是一个孤独的素数。

比如:一个 3 行 5 列的矩阵如下。

cpp 复制代码
3 8 10 9 5
6 10 2 4 13
8 8 9 6 3

这个矩阵中有 2 个素数,分别是第 1 行第 1 列的 3,和第 2 行第 3 列的 2 。

请编程计算出,一个 n 行 m 列的矩阵中有多少个孤独的素数?

输入:

第 1 行有 2 个整数 n 和 m ,代表矩阵的大小(3≤n,m≤50)。

接下来 n 行,每行有 m 个整数(这些整数是 1∼1000 之间的整数,含 1 和 1000 )

输出:

输出 1 个整数,代表矩阵中孤独素数的个数。

样例:

输入:

cpp 复制代码
3 5
3 8 10 9 5
6 10 2 4 13
8 8 9 6 3

输出:

cpp 复制代码
2

完整代码如下:

cpp 复制代码
#include<bits/stdc++.h> 
using namespace std;

bool isPrime(int p){
	if(p<=3) return p>1;
	if(p%2==0||p%3==0) return false;
	for(int i=5;i*i<=p;i+=6){
		if(p%i==0||p%(i+2)==0) return false;
	}
	return true;
}

int main(){
	//一、分析问题
	//已知: 一个 n 行 m 列的矩阵;
	//未知:矩阵中有多少个孤独的素数?
	//关系:
	
	//二、数据定义 
	int n,m,t,c=0;
	bool ip[51][51];
	//三、数据输入 
	cin>>n>>m;
	for(int i=0;i<n;++i){
		for(int j=0;j<m;++j){
			cin>>t;
			ip[i][j]=isPrime(t);
		}
	}
	//四、数据计算 
	for(int i=0;i<n;++i){
		for(int j=0;j<m;++j){
			if(ip[i][j]){
				//上 
				if(i-1>=0&&ip[i-1][j]) continue;
				//右上 
				if(i-1>=0&&j+1<m&&ip[i-1][j+1]) continue;
				//右
				if(j+1<m&&ip[i][j+1]) continue;
				//右下 
				if(i+1<n&&j+1<m&&ip[i+1][j+1]) continue;
				//下 
				if(i+1<n&&ip[i+1][j]) continue;
				//左下 
				if(i+1<n&&j-1>=0&&ip[i+1][j-1]) continue;
				//左 
				if(j-1>=0&&ip[i][j-1]) continue;
				//左上 
				if(i-1>=0&&j-1>=0&&ip[i-1][j-1]) continue;
				
				//八个方向都不是素数 
				++c;
			}
		}
	}

	//五、输出结果 
	cout<<c;
	return 0;	
}
相关推荐
西部秋虫15 分钟前
YOLO 训练车牌定位模型 + OpenCV C++ 部署完整步骤
c++·python·yolo·车牌识别
CryptoPP1 小时前
使用 KLineChart 这个轻量级的前端图表库
服务器·开发语言·前端·windows·后端·golang
18你磊哥1 小时前
chromedriver.exe的使用和python基本处理
开发语言·python
小坏讲微服务1 小时前
Spring Cloud Alibaba 整合 Scala 教程完整使用
java·开发语言·分布式·spring cloud·sentinel·scala·后端开发
Kiri霧1 小时前
Scala 循环控制:掌握 while 和 for 循环
大数据·开发语言·scala
闲人编程1 小时前
Python的抽象基类(ABC):定义接口契约的艺术
开发语言·python·接口·抽象类·基类·abc·codecapsule
qq_172805591 小时前
Go 语言结构型设计模式深度解析
开发语言·设计模式·golang
lkbhua莱克瓦242 小时前
集合进阶8——Stream流
java·开发语言·笔记·github·stream流·学习方法·集合
20岁30年经验的码农2 小时前
Java Elasticsearch 实战指南
java·开发语言·elasticsearch
雾岛听蓝2 小时前
C++ 类和对象(一):从概念到实践,吃透类的核心基础
开发语言·c++·经验分享·笔记