【信息学奥赛】在一个包含N个整数的数组中找到第一个质数

【信息学奥赛】在一个包含N个整数的数组中找到第一个质数

|-----------------------------|
| 💖The Begin💖点点关注,收藏不迷路💖 |

编写一个函数,用于在一个包含N个整数的数组中找到第一个质数,若有则返回函数的地址;否则返回NULL(空指针)。

输入:

两行,第一行为N,第二行为N个数据元素

输出:

素数的地址和它本身,如果不存在,输出can't find!

样例输入 1:

java 复制代码
4
8 6 9 7

样例输出 1:

java 复制代码
3 7

样例输入 2:

java 复制代码
4
8 6 9 77

样例输出 2:

java 复制代码
can't find!

裁判测试程序样例:

java 复制代码
#include<stdio.h>
#include<math.h>
int n,a[10001];
int isprime(int n){
	int i=0;
	if(n<2)return 1;
	if(n==2)return 0;
	for(i=2;i<=sqrt(n);i++){
		if(n%i==0)return 0;
	}
	return 1;
}
int *find();
int main() {
	int i=1;
	scanf("%d",&n);
	for(;i<=n;++i)
		scanf("%d",a+i);
	int *p=find();
	if(p!=NULL){
		printf("%d %d\n",p-a-1,*p);
	}else{
		printf("can't find!");
	}
	printf("\n");
	return 0;
}
/* 请把您的答案填写在这里 */

int *find() {
    for (int i = 1; i <= n; ++i) {
        if (isprime(a[i])) {
            return &a[i];
        }
    }

    return NULL;
}

这段代码实现的思想是:

  1. 首先定义了一个isprime函数,用于判断一个数是否为质数。如果一个数小于2,直接返回0;如果一个数等于2,返回1;否则从2开始到该数的平方根之间进行遍历,如果能被整除则说明不是质数,返回0,否则返回1。

  2. 然后定义了一个find函数,用于在输入的整数数组中找到第一个质数。通过遍历数组的方式,对每个元素调用isprime函数,如果找到了质数,则返回该质数的地址,否则返回空指针。

  3. 在main函数中,首先读取输入的整数N,然后依次读取N个整数到数组中。接着调用find函数找到第一个质数,如果找到了,则输出该质数的位置和值,如果没有找到,则输出"can't find!"。

整体来说,这段代码通过定义函数来实现质数判断和查找操作,然后在main函数中调用这些函数完成任务。

|---------------------------|
| 💖The End💖点点关注,收藏不迷路💖 |

相关推荐
Pniubi1 小时前
HashMap的扩容和树化边界
java·开发语言
gCode Teacher 格码致知2 小时前
Pandas教学-17:Series与Dataframe的关系
开发语言·python·pandas
发量惊人的中年网工3 小时前
分公司访问总部ERP慢怎么办?SD-WAN组网的排查与验收要点
服务器·开发语言·php
下页、再停留3 小时前
【C#桌面客户端系列学习-15】生成可视化图表之折线图、柱状图、饼状图
开发语言·c#
ShineWinsu3 小时前
对于JavaScript:操作元素的解析
开发语言·前端·javascript·面试·web·dom·元素
罗西的思考4 小时前
【Agentic RL】Dressage Staleness 控制深度分析
人工智能·算法·机器学习
quaer4 小时前
弗洛伊德算法--判圈法寻找环的入口O(n) O(1)
数据结构·算法
益莱储中国4 小时前
深度解析:RF 实验室从 5G迈向 6G 的过程中保持技术领先与设备升级的路径
开发语言·php
benchmark_cc5 小时前
Python 量化系统如何设计统一的数据访问接口:从策略解耦到数据层架构
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
高晶5 小时前
无乘法器实现LC二阶滤波器:基于移位运算的快速算法与四种精度推导
算法·设计模式·程序员