zoukankan      html  css  js  c++  java
  • 【原创】求质数时出现的问题及结果办法

    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");
                }
            }
             
        }
  • 相关阅读:
    SharedPreferences
    Handler
    Gallery 和ImageSwitcher
    poj 1077 Eight (BFS)
    HDU 1208 Pascal's Travels( 记忆化搜索)
    HDU 1619 Unidirectional TSP (dp,dfs)
    HDU 3683 Gomoku (枚举+BFS)
    HDU 3647 Tetris (暴力DFS)
    poj 1020 Anniversary Cake (DFS)
    poj 1375 Intervals(解析几何 过圆外一点求与圆的切线)
  • 原文地址:https://www.cnblogs.com/chenyongblog/p/2764429.html
Copyright © 2011-2022 走看看