zoukankan      html  css  js  c++  java
  • Project Euler:Problem 37 Truncatable primes

    The number 3797 has an interesting property. Being prime itself, it is possible to continuously remove digits from left to right, and remain prime at each stage: 3797, 797, 97, and 7. Similarly we can work from right to left: 3797, 379, 37, and 3.

    Find the sum of the only eleven primes that are both truncatable from left to right and right to left.

    NOTE: 2, 3, 5, and 7 are not considered to be truncatable primes.



    #include <iostream>
    #include <string>
    using namespace std;
    
    bool prim(int a)
    {
    	if (a == 1)
    		return false;
    	for (int i = 2; i*i <= a; i++)
    	{
    		if (a%i == 0)
    			return false;
    	}
    	return true;
    }
    
    bool tr_prim(int a)
    {
    	int num = a;
    	int count = 0;
    	int tmp[10] = { 0 };
    	while (a)
    	{
    		if (!prim(a))
    			return false;
    		count++;
    		tmp[count] = a % 10;
    		a /= 10;
    	}
    	for (int i = count; i > 1; i--)
    	{
    		num = num - tmp[i] * pow(10, i - 1);
    		if (!prim(num))
    			return false;
    	}
    	return true;
    }
    
    
    int main()
    {
    	
    	int sum = 0;
    	for (int i = 10; i <= 1000000; i++)
    	{
    		if (tr_prim(i))
    		{
    			//cout << i << endl;
    			sum += i;
    		}
    	}
    	cout << sum << endl;
    	system("pause");
    	return 0;
    


  • 相关阅读:
    将博客搬至CSDN
    defender 月考总结
    生日祝福@陈俊翰
    个性签名
    你这是virus吧?
    (CPSCA's)CPOJC+VIJOS
    Sentence by defender
    工作制一览
    最长上升子序列
    mysql约束
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7069791.html
Copyright © 2011-2022 走看看