列表

详情


NC214048. 最小互质数

描述

我们定义两个数互质当且仅当gcd(a, b) = 1。

现在qcjj手里有n个数,分别为
问,没有在这n个数中出现过并且与这n个数都互质的最小的数是多少。
qcjj觉得这个问题太简单了,于是她把这个问题交给你来解决。

输入描述

第一行一个数
接下来n行,每行一个数,分别代表

输出描述

输出一行代表答案。

示例1

输入:

5
1 
2 
3 
4 
5

输出:

7

说明:

没有在这n个数中出现的数有:6,7,……
6与2, 3, 4不互质,最小的与这n个数互质的数就是7了。

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang11) 解法, 执行用时: 15ms, 内存消耗: 688K, 提交时间: 2021-01-01 16:23:47

#include<stdio.h>
main()
{
	int n;
	int book[100006]={0};
	int i;
	int j;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		int x;
		scanf("%d",&x);
		book[x]=1;
	}
	for(i=2;i<=100005;i++)
	{
		for(j=i;j<=100005;j+=i)
		book[i]|=book[j]; 
	}
	for(i=2;i<=100005;i++)
	for(j=i;j<=100005;j+=i)
	book[j]|=book[i];
	for(i=1;1;i++)
	if(book[i]==0){
		printf("%d",i);
		break;
	}
	 
} 

C++(clang++11) 解法, 执行用时: 99ms, 内存消耗: 5364K, 提交时间: 2020-12-31 21:32:18

#include<bits/stdc++.h>
using namespace std;
int n,i,a[100002],j;
map<int,int>f;
int main()
{
	cin>>n;
	for(;i<n;i++)
    {
    	cin>>a[i];
    	f[a[i]]=1;
	}for(i=1;;i++)
	{
		if(!f[i])
		{
			for(j=0;j<n;j++)
			    if(__gcd(a[j],i)!=1)goto A;
			cout<<i;return 0;A:;
		}
	}
} 

Python3(3.9) 解法, 执行用时: 235ms, 内存消耗: 7052K, 提交时间: 2020-12-31 22:59:26

n = int(input())
hash_set = set()
for _ in range(n):
    hash_set.add(int(input()))
import math
i = 1
while True:
    if i in hash_set:
        i += 1
        continue
    if all(math.gcd(num,i)==1 for num in hash_set):
        print(i)
        break
    i += 1

pypy3(pypy3.6.1) 解法, 执行用时: 240ms, 内存消耗: 28016K, 提交时间: 2021-01-01 00:36:34

import math

n = int(input())
ss1 = set()
for _ in range(n):
    ss1.add(int(input()))
i = 1
while 1:
    if i in ss1:
        i += 1
        continue
    elif all(math.gcd(x, i) == 1 for x in ss1):
        print(i)
        break
    i += 1

上一题