黑马程序员技术交流社区
标题:
如何判断是否为素数
[打印本页]
作者:
xinchenglong
时间:
2013-8-26 14:21
标题:
如何判断是否为素数
昨天的时候,我做测试题,碰到一个判断是否为素数的题目,想了很长时间,但是不怎么好理解,求各位黑马人员各抒己见,有没有好的,更优的方式来解决这个问题呢?(遍历)
作者:
叶鹏
时间:
2013-8-26 16:31
void getSushu(){
for(int i=101;i<200;i++){
boolean b=false;
double Num=0;
if(i%2!=0){
Num=Math.sqrt(i);
for(int j=2;j<=Num;j++){
if(i%j==0){
b=false;
break;
}else{
b=true;
}
}
if(b==true){
System.out.println(i);
}
}
}
复制代码
这是我做的一个1求从101到200之间的素数,求任意的素数只需要改变循环下表,你可以看下,希望对你有用
作者:
胡盼盼
时间:
2013-8-26 17:06
这两个网页你可以看看,希望能帮到你
http://www.cnblogs.com/CSharpSPF/archive/2012/04/04/2432105.html
http://www.cnblogs.com/luluping/archive/2010/03/03/1677552.html
作者:
brucel50
时间:
2013-8-26 18:22
把我这笨拙的代码发来看看:
using System;
namespace Que
{
class Program
{
static void Main(string[] args)
{
string sInput = "";
while(true)
{
Console.WriteLine("请输入一个数,系统将判断此数是否为素数,若输入为quit,则退出程序");
sInput = Console.ReadLine();
if(sInput == "quit")
{
Console.WriteLine("程序即将退出...");
break;
}
//能运行到这里,说明用户没有输入"quit",接下来判断是否是合法的
int iNum;
bool bifSuccess = int.TryParse(sInput,out iNum);
if(!bifSuccess)
{
Console.WriteLine("输入有误,程序将重新执行...");
continue;
}
//能运行到这里说明,可以判断这个数是否为素数了
//iNum是这个数,从iNum到1判断,iNum包含不包含除了1、它本身之外的约数
//1 1%[1,1] 2 2%[1,2] ...
bool biNumisSushu = true;
if(iNum != 1&&iNum != 2)
{
for(int i = iNum-1;i>=2;i--)
{
if(iNum%i==0)
{
if(i!=1&&i!=iNum)
{
Console.WriteLine("这个数不是素数!");
biNumisSushu = false;
break;
}
}
}
}
//运行到这里,说明这个数是素数
if(biNumisSushu)
{
Console.WriteLine("这个数是素数!");
}
}
}
}
}
复制代码
作者:
天涯浪子
时间:
2013-8-26 19:53
static void Main(string[] args)
{
for(int i=2;i<=100;i++)
{
if(IsNumberOK(i))
{ //判断是素数时
Console.WriteLine(i);//这是判断成功的数
}
}
Console.ReadKey();
}
static bool IsNumberOK(int number)
{
//判断是否为素数
//规则是什么自己去写
}
作者:
xinchenglong
时间:
2013-8-26 20:47
{:soso_e127:}你说的很有道理啊,还是没有解决根本问题啊!还是要谢谢你啊……
作者:
xinchenglong
时间:
2013-8-26 20:47
楼上的帅哥美女们,多谢啦
作者:
小天
时间:
2013-8-27 12:25
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test7
{
class Program
{
static void Main(string[] args)
{
//判断某个数是不是素数
int num = 7;
int count = 0;
for (int i = 1; i <= num; i++)
{
if (num % i == 0)
{
count++;
}
}
if (count > 2)
{
Console.WriteLine("{0}不是素数",num);
}
else
{
Console.WriteLine("{0}是素数",num);
}
Console.ReadKey();
}
}
}
复制代码
作者:
赵祥
时间:
2013-8-28 01:18
最优算法,判断这个数是不是素数,只需循环到这个数的开平方根即可 ,比如求100是否素数,只需求到√100即可判断出来是否素数了
作者:
马晓凤
时间:
2013-8-28 08:50
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test7
{
class Program
{
static void Main(string[] args)
{
//判断某个数是不是素数
int num = 1;//要判断的数
bool isSuShu = true;
if (num!=1&&num!=0)//0和1既不是素数也不是合适
{
for (int i = 2; i <= Math.Sqrt(num); i++)
{
if (num % i == 0)
{
isSuShu = false;
break;
}
}
}
else
{
isSuShu = false;
}
if (true==isSuShu)
{
Console.WriteLine(num+":是素数");
}
else
{
Console.WriteLine(num + ":不是素数");
}
Console.ReadKey();
}
}
}
复制代码
借用楼上的代码,我做一点小小的优化
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2