1 条题解

  • 4
    @ 2023-7-8 14:30:12
    #include <iostream>
    #include <string>
    #include <cmath>
    using namespace std;
    bool prime(int n)//经典的判断质数函数
    {
    	int prime = 1;
    	for (int i = 2; i <= sqrt(n); i++)
    	{
    		if (n % i == 0)
    		{
    			prime = 0;
    			break;
    		}
    	}
    	if (prime == 1)
    	{
    		return true;
    	}
    	else
    	{
    		return false;
    	}
    }
    int main()
    {
    	int n;
    	int a, b;
    	cin >> n;
    	int num = 0;
    	int min = 1410065407;//int类型的最大数
    	for (int i = 0;; i++)
    	{
    		if (n / (int)pow(10, i) == 0)//还是要注意隐式转换的问题
    		{
    			break;
    		}
    		else
    		{
    			a = n / (int)pow(10, i);
    			b = n % (int)pow(10, i);
    			if (prime(a+b) == true && min > a+b)//同时满足质数和更小
    			{
    				min = a + b;
    			}
    		}
    	}
    	if (min < 1410065407)//当min还等于1410065407说明没有这样的质数
    	{
    		cout << min;
    	}
    	else
    	{
    		cout << -1;
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    128
    时间
    1000ms
    内存
    64MiB
    难度
    1
    标签
    递交数
    51
    已通过
    42
    上传者