首页 > 试题广场 >

小红的“质数”寻找

[编程题]小红的“质数”寻找
  • 热度指数:2373 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1024M,其他语言2048M
  • 算法知识视频讲解
\hspace{15pt}小红拿到了一个正整数 x,她希望你在 [x, 2 \times x] 区间内找到一个正整数,满足该正整数所有数位之和为一个质数,你能帮帮她吗?

输入描述:
\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 10^5\right) 代表数据组数,每组测试数据描述如下:
\hspace{15pt}在一行上输入一个正整数 x \left(1\leqq x\leqq 10^{100\,000}\right)

\hspace{15pt}除此之外,保证单个测试文件的 x 之和小于 10^{1\,000\,000}


输出描述:
\hspace{15pt}对于每一组测试数据,新起一行。如果不存在满足条件的正整数,直接输出 -1;否则,输出一个正整数,代表答案。
\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

2
1
11

输出

2
14

说明

\hspace{15pt}对于第一组测试数据,我们需要在 [1,2] 区间内找到一个正整数,满足该正整数所有数位之和为一个质数。其中,1 的数位之和为 12 的数位之和为 21 既不属于合数、也不是质数;所以 2 是唯一答案。
\hspace{15pt}对于第二组测试数据,14 的数位之和为 1+4=5,符合条件。注意答案不唯一。
头像 糖串
发表于 2025-03-19 14:51:43
#include <iostream> #include <map> #include <vector> using namespace std; string fun(char first) { int n = first - '0'; if 展开全文
头像 黑榜o小兔
发表于 2025-04-30 15:14:05
题目描述是找到 [x, 2x] 范围内 满足所有数位和 为质数,X数据大到10w位,直接查肯定不行需要转换一下思路,因为要求只要1个结果,自己构造肯定是怎么方便怎么来所以只需要考虑答案的前1~2位,后面全部补0,这样就是最简单的办法现在来确定一下范围就行,当X = 1.ddd × 10n ,[ x 展开全文
头像 Lunaurara
发表于 2025-11-24 17:51:05
nums = ["2", "3", "5", "5", "7", "7", "12", "12", "12"] t = 展开全文
头像 番禺小韭菜
发表于 2025-03-06 10:29:16
#include <iostream> #include <vector> using namespace std; vector<string> ans = {"2", "3", "5", " 展开全文
头像 irelia1
发表于 2025-04-09 00:10:35
#include <iostream> using namespace std; int main() { int t; cin>>t; string res; while(cin>>res){ if(res[0] 展开全文
头像 Goldminer
发表于 2025-04-28 10:44:14
#include <iostream> // 输入输出流 #include <string> // 字符串处理 #include <vector> // 动态数组 vector #include <algorithm&g 展开全文
头像 CARLJOSEPHLEE
发表于 2025-03-02 12:22:34
from sys import stdin,stdout input = lambda:stdin.readline().strip() for _ in range(int(input())): x = input() len1 = len(x)-1 s = int(x[0 展开全文
头像 ading007
发表于 2025-05-23 15:44:09
package main import ( "fmt" ) func main() { var T int fmt.Scan(&T) results := make([]string, T) for i := 0; i < T; i++ { 展开全文
头像 牛客276105122号
发表于 2025-03-24 11:24:58
import sys import math def iszhishu(n): if n < 2: return 0 if n == 2: return 1 for i in range(2,int(math.sqrt(n))+1): 展开全文
头像 牛客276105122号
发表于 2025-03-24 11:26:42
import sys import math def iszhishu(n): if n < 2: return 0 if n == 2: return 1 for i in range(2,int(math.sqrt(n))+1): 展开全文