问答详情
源自:2-2 C#的注释

C#控制台素数问题

using System;

using System.Collections.Generic;

using System.Text;


namespace Test

{

    class Program

    {

        static void Main(string[] args)

        {

          for(int i=2;i<=100;i++)

          {

             for(int a=2;a<=i;a++)

             {

                if(i%a==0&&a!=1)

                {

                 Console.WriteLine(i); 

                 break;

                }

                

             }

          }

        }

    }

}这个循环哪里有错


提问者:qq_独孤九潇_0 2018-05-21 18:03

个回答

  • 慕仔0944135
    2018-05-25 02:51:46
    已采纳

    a<=i是不是有问题,假如i=2,那么第一次循环a=2,a%a为 2%2=0,且a!=1,自己处以自己怎么能算非素数呢,

    所以我觉得应该a<i,还有一点,这个有个数学问题,a<Math.Ceiling(Math.Sqrt(i))这样能减少运算次数,一般都是开根号来算,我也没找到证明,你就自己查Prime函数,都是这么写

  • qq_星月_11
    2018-05-22 16:02:02

    for (int i = 2; i <= 100; i++)
                {

                    for (int a = 2; a <= i; a++)

                    {

                        if (i % a == 0 && a != i)

                        {
                            break;

                        }else if (a == i){
                            Console.WriteLine("素数" + i);
                        }
                    }
                }

  • qq_星月_11
    2018-05-22 15:55:45

    for (int i = 2; i <= 100; i++)
                {

                    for (int a = 2; a <= i; a++)

                    {

                        if (i % a == 0 && a != i)

                        {
                            Console.WriteLine("非素数"+i);
                            break;

                        }

                    }

                }