C#控制台素数问题

来源:2-2 C#的注释

qq_独孤九潇_0

2018-05-21 18:03

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;

                }

                

             }

          }

        }

    }

}这个循环哪里有错


写回答 关注

3回答

  • 慕仔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函数,都是这么写

    慕仔0944... 回复qq_独孤九...

    有一点说错了,应该a<=(Math.Sqrt(i)+1),但最好把Math.Sqrt(i)+1,拿出来算放个变量里,要么每次循环都白算一次开方,如果你做题的话会花额外时间的。

    2018-05-31 03:08:06

    共 2 条回复 >

  • 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;

                        }

                    }

                }

C#开发轻松入门

本门课程是C#语言的入门教程,将带你轻松入门.NET开发

254118 学习 · 1459 问题

查看课程

相似问题