为了账号安全,请及时绑定邮箱和手机立即绑定

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;

                }

                

             }

          }

        }

    }

}这个循环哪里有错


正在回答

3 回答

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

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

0 回复 有任何疑惑可以回复我~
#1

qq_独孤九潇_0 提问者

非常感谢!
2018-05-30 回复 有任何疑惑可以回复我~
#2

慕仔0944135 回复 qq_独孤九潇_0 提问者

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

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);
                    }
                }
            }

0 回复 有任何疑惑可以回复我~

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

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

                {

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

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

                    }

                }

            }

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C#开发轻松入门
  • 参与学习       251967    人
  • 解答问题       1448    个

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

进入课程

C#控制台素数问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信