Fork me on GitHub

【原创】求质数时出现的问题及结果办法

1.求质数中出现的问题 并非所有的代码路径都有返回值

 public static bool ZhiShu(int number)

   {

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

      if(number % i == 0){

         return false;

       }

      else{

         return true;

      }

     }

  }

 

错误原因:程序会认为如果有条件不满足程序的话就没有返回值。比如说i=2的时候。

修改代码如下:

public static bool ZhiShu(int number) {

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

     if(number % i== 0){

       return false;

       break;

     }

   }

   return true;

} 

 

只要number%i==0就返回false,然后跳出循环,优化效率。

求1-100之间的素数

namespace 质数问题
{
    class Program
    {
        static void Main(string[] args)
        {
            int sum = 1;
            Console.Write(2 + " ");
            for (int m = 3; m <= 100; m += 2)//这里采用每次递增单位为2,减少次数,优化效率。
            {
                bool a = true;
                if (m % 2 == 0)//这里主要是对10*i这样的数字过滤
                {
                    a = false;
                }
                else
                {
                    for (int i = 3; i < m / 2; i += 2)
                    {
                        if (m % i == 0)
                        {
                            a = false;
                            break;
                        }
                    }
                }
                if (a == true)
                {
                    sum++;
                    Console.Write(m.ToString() + " ");
                }
            }
            Console.WriteLine();
            Console.WriteLine("total:" + sum);
            Console.ReadLine();
        }
    }
}

 最简单方法:

    public static void Main()
    {
        int i;
        Console.WriteLine (2);
        Console.WriteLine (3);
        Console.WriteLine (5);
        Console.WriteLine (7);
        for(i=2;i<=1000;i++)
        {
            if((i%2!=0)&&(i%3!=0)&&(i%5!=0)&&(i%7!=0))
            {
                Console.WriteLine (i+"\t");
            }
        }
         
    }

 

posted @ 2012-11-10 20:17  种花生的读书人  阅读(197)  评论(0编辑  收藏  举报

该博客仅作为记录笔记,转载随意