【原创】求质数时出现的问题及结果办法
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"); } } }