繁体   English   中英

欧拉计划35号

[英]Project Euler number 35

使用以下代码,我可以找到圆形素数,但是有一些意外的值。 例如,如果“ 13”是圆形素数,则应删除“ 31”。 请提出消除这种情况的方法。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PrimeNumberAlgorithm
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
            int n = 100;
            int check_limit = (Int32)Math.Sqrt(Convert.ToDouble(n));
            int count_Circular = 0;

            bool[] b_arr = new bool[n - 2];

            sw.Start();
            for (int i = 0; i < b_arr.Length; i++)
            {
                b_arr[i] = true;
            }
            int currentNum = 2;
            for (int i = 0; i < check_limit; i++)
            {
                if (b_arr[i] == true)
                {
                    for (int j =i+currentNum;j < b_arr.Length; j += currentNum)
                    {
                        b_arr[j] = false;
                    }
                }
                currentNum++;
            }

            for(int i = 0; i < n-2; i++)
            {
                if (b_arr[i])
                {
                    int j = i + 2;
                    if (j != 2 && j != 5)
                    {
                        string numStr = j.ToString();
                        char[] chr_numStr = numStr.ToCharArray();

                        for (int k = 0; k < chr_numStr.Length; k++)
                        {
                            if (chr_numStr[k] % 2 == 0 || chr_numStr[k] == 5)
                            {
                                b_arr[i] = false;
                                break;
                            }
                        }

                    }
                }

                if (b_arr[i])
                {
                    Console.WriteLine("The circular primes are:\n");
                    Console.WriteLine(i+2);
                    count_Circular++;
                }

            }
            sw.Stop();
            Console.WriteLine("The total number of circular primes:{0}",count_Circular);
            Console.WriteLine("The time taken:{0} sec",sw.ElapsedMilliseconds/(1000));
        }
    }
}

我认为您误解了这个问题。 再次阅读:

  • “有低于100 13米这样的素数:2,3,5,7,11,13,17,31,37,71,73,79,和97”

提示:如果该数字包含数字0、2、4、5、6、8中的任何一个,则它不能为圆形,除非为2或5。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM