列表

详情


NC230096. Prime

描述

我叫peter,我最喜欢素数了

输入描述

第一行输出一个正整数n

接下来有n次询问,每个询问单独占一行,每次给一个正整数x,询问第一个大于等于x的素数

数据随机分布

输出描述

对每一个询问将答案单独一行输出到屏幕

示例1

输入:

2
1
4

输出:

2
5

原站题解

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

C 解法, 执行用时: 7383ms, 内存消耗: 352K, 提交时间: 2022-05-21 22:44:01

#include <stdio.h>
long long su(long long n){
	long long shi=1,i;
	if(n==1) shi=0;
	for(i=2;i*i<=n;i++){
		if(n%i==0){
			shi=0;
			break;
		}
	}
	return shi;
}
int main()
{
	int n;
	long long l,i;
	scanf("%d",&n);
	while(n--){
		scanf("%lld",&l);
		for(i=l;;i++){
			if(su(i)==1){
				printf("%lld\n",i);
				break;
			}
		}
	}
	return 0;
}

C++ 解法, 执行用时: 7799ms, 内存消耗: 420K, 提交时间: 2021-12-12 13:50:05

#include<bits/stdc++.h>
using namespace std;
long long x,n;
bool pd(long long a)
{
	for(int i=2;i<=sqrt(a);i++)	if(a%i==0) return 0;
	return 1;
}
int main()
{
	cin>>n;
	for(long long i=1;i<=n;i++)
	{
		cin>>x;bool t=1;if(x==1) ++x;
		while(t){
			if(pd(x)){
				cout<<x<<endl;
				t=0;
			}
			++x;
		}
	}
}

pypy3 解法, 执行用时: 9415ms, 内存消耗: 26612K, 提交时间: 2021-12-12 20:22:52

import math
n=int(input())
for i in range(n):
    a=int(input())
    for j in range(a,10**14):
        if j==1 or j==2:
            print(2)
            break
        for a in range(2,int(math.sqrt(j))+1):
            if j%a==0:
                break
        else:
            print(j)
            break

上一题