怎样判断一个数n是质数(素数)还是和数?

angel6709 2009-06-16 01:30:45
数论永远是个永恒的话题,我以前有看过,好像是2的n-1次幂有关。。。
...全文
1354 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
showjim 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 sbwwkmyd 的回复:]
引用 19 楼 qldsrx 的回复:
引用 6 楼 sbwwkmyd 的回复:
如果A,B互质;(A^(B-1))%B!=1,则B为合数,否则B极有可能为素数,也可能是伪素数.


哪里看来的?没有任何根据,我试了几组数据,都是返回true,无论是否互质。


^是乘方,不是异或
[/Quote]
另外,我说的是"如果互质",排除了"非互质"的情况
showjim 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 qldsrx 的回复:]
引用 6 楼 sbwwkmyd 的回复:
如果A,B互质;(A^(B-1))%B!=1,则B为合数,否则B极有可能为素数,也可能是伪素数.



哪里看来的?没有任何根据,我试了几组数据,都是返回true,无论是否互质。
[/Quote]
^是乘方,不是异或
angel6709 2009-06-17
  • 打赏
  • 举报
回复
不讨论了,结贴,谢谢大家参与。
柳晛 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 qldsrx 的回复:]
楼上在那里吹牛了,你知道哪些是素数?不知道有哪些素数的话怎么找素数的倍数,要是知道还用问那个是不是素数?
[/Quote]

我说的是找素数,找素数哪能无限地找下去?
比如100以内的非素数就是10以内素数的倍数,以此类推。
注册失败 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 angel6709 的回复:]
能不能得出这样的结论:
不能被n^(1/2)+1以前的所有的质数整除的数就是质数。。。
但问题是怎么得出这样的东西:
a.
n1=2
n2=3
n3=5
n4=7
n5=11
n6=13
nm=m表达式
[/Quote]

楼主又在造轮子。。。
不能被n^(1/2)+1以前的所有的质数整除的数就是质数。。。
这句话是数论里的一个推论,不过原话不是这个说的,意思一样。
楼主,造轮子之前先看看书吧

对于nm=m表达式
这个全世界人都在寻找,楼主找到了,就可以获得菲尔兹奖了
qldsrx 2009-06-16
  • 打赏
  • 举报
回复
楼上在那里吹牛了,你知道哪些是素数?不知道有哪些素数的话怎么找素数的倍数,要是知道还用问那个是不是素数?
柳晛 2009-06-16
  • 打赏
  • 举报
回复
纠正:如果是找素数的话,除去素数的倍数,其余都是素数。
柳晛 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 asdf311 的回复:]
不要从 2 检查到 n-1 的,只要检查到 n^(1/2) 就行了,为了保证正确,向上取整。
[/Quote]

对,比如3x3=9,不需要4.5*4.5即可。

如果是找素数的话,除去素数的公倍数,其余都是素数。
zenowolf 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zcalll 的回复:]
C# codepublic bool IsZhiShu(int value)
{
if(value==2)
return true;

for(int i=2; i<value; i++)
{
if(value%i == 0)
return false;
}

return true;
}
[/Quote]
我来优化下
public bool IsZhiShu(int value)
{
if(value==2)
return true;

for(int i=2; i<int.parse(Math.Sqrt(value)); i++)
{
if(value%i == 0)
return false;
}

return true;
}
qldsrx 2009-06-16
  • 打赏
  • 举报
回复
测试这个函数,将会得到你要的结果,如果是素数,就显示为true

public static void test(int N)
{
int start = 2, limit = N/2;
bool isprime = true;
while (start < limit)
{
if (N % start == 0)
{
isprime = false;
break;
}
else
{
start++;
limit = N / start;
}
}
Console.WriteLine(isprime);
}


基本原理是,一个非素数,至少应该拆分成两个数的乘积,那么我们只要找下是否存在这么两个数就够了,如果那个数是10000,极限就是100×100,也就是遍历100次,还是很快的,但要是换作二分法,你可是要遍历5000次,差距多大可想而知了吧。
qldsrx 2009-06-16
  • 打赏
  • 举报
回复
可以那么理解,不过似乎是个笨办法,等我想个更好的方法给你。
angel6709 2009-06-16
  • 打赏
  • 举报
回复
能不能得出这样的结论:
不能被n^(1/2)+1以前的所有的质数整除的数就是质数。。。
但问题是怎么得出这样的东西:
a.
n1=2
n2=3
n3=5
n4=7
n5=11
n6=13
nm=m表达式
wewei123shangdawei 2009-06-16
  • 打赏
  • 举报
回复

import java.util.*;



public class zhishu {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

String answer = "";

do {

int count = 0;

System.out.println("请输入您要判断的数:");

int num = input.nextInt();

for (int i = 1; i <= num; i++) {



if (num % i == 0) {

count++;

}

}

if (count == 2) {

System.out.print("这个数是质数");



}else if(count == 1) {

System.out.print("这个数既不是质数也不是合数");

} else {

System.out.print("这个数是合数");

}

System.out.println("\n\n继续吗 (y/n)?");

answer = input.next();

} while (answer.equals("y"));

System.out.println("程序结束!");



}

}



qldsrx 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sbwwkmyd 的回复:]
如果A,B互质;(A^(B-1))%B!=1,则B为合数,否则B极有可能为素数,也可能是伪素数.
[/Quote]

哪里看来的?没有任何根据,我试了几组数据,都是返回true,无论是否互质。
desegou 2009-06-16
  • 打赏
  • 举报
回复
哦,对哦,那我的结论可以否定
angel6709 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 desegou 的回复:]
好像满足除以2、3、5除不尽的就是素数,所以算法的话判断这三种情况就可以了
[/Quote]
想了想还是不对呀,77/2,3,5都除不断,但他是7*11的和数,。。。。
angel6709 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 angel6709 的回复:]
引用 14 楼 desegou 的回复:
好像满足除以2、3、5除不尽的就是素数,所以算法的话判断这三种情况就可以了


7呢,17呢37呢呵呵,
[/Quote]
奥,我看错了哈,是除不尽的啊,对不起了哈,有待研究
angel6709 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 desegou 的回复:]
好像满足除以2、3、5除不尽的就是素数,所以算法的话判断这三种情况就可以了
[/Quote]
7呢,17呢37呢呵呵,
desegou 2009-06-16
  • 打赏
  • 举报
回复
好像满足除以2、3、5除不尽的就是素数,所以算法的话判断这三种情况就可以了
angel6709 2009-06-16
  • 打赏
  • 举报
回复
public bool IsPrimeNumber(long value)
{
if (value == 2)
{
return true;
}

for (long i = 2; i <= Math.Ceiling(Math.Sqrt(value)); i++)
{
if ((value % i) == 0)
{
return false;
}
}

return true;
}
先判断n是不是偶数,
然后i=2改成从3开始i++改成:i+=2效率会更好哈
加载更多回复(12)
【更新至2025年】2001-2025年上市公司字化转型年报词频统计(吴非、赵宸宇、甄红线)(300+年报词频统计) 1、时间:2001-2025年 2、来源:上市公司年报 3、参考文献:企业字化转型与资本市场表现——来自股票流动性的经验证据(吴非) 字化转型如何影响企业全要素生产率(赵宸宇) 知识产权行政保护与企业字化转型(甄红线) 4、方法说明:(1)参考吴非老师的做法,对人工智能技术、大据技术、云计算技术、区块链技术、字技术运用五个维度76个字化相关词频进行统计 (2)参考赵宸宇老师的做法,对字技术应用、互联网商业模式、智能制造、现代信息系统四个维度99个字化相关词频进行统计 (3)参考甄红线老师的做法,对技术分类、组织赋能、字化应用等类别下139个字化相关词频进行统计 5、指标:年份、股票代码、公司简称、行业名称、行业代码、全文-文本总长度、仅中英文-文本总长度、人工智能技术-吴、大据技术-吴、云计算技术-吴、区块链技术-吴、字技术运用-吴、字技术应用-赵、互联网商业模式-赵、智能制造-赵、现代信息系统-赵、技术分类-人工智能技术-甄、技术分类-区块链技术-甄、技术分类-云计算技术-甄、技术分类-大据技术-甄、组织赋能-人工智能技术-甄、组织赋能-云计算技术-甄、组织赋能-大据技术-甄、组织赋能-广义字技术-甄、字化应用-技术创新-甄、字化应用-流程创新-甄、字化应用-业务创新-甄、人工智能、商业智能、图像理解、投资决策辅助系统、智能据分析、智能机器人、机器学习、深度学习、语义搜索、生物识别技术、人脸识别、语音识别、身份验证、自动驾驶、自然语言处理、大据、据挖掘、文本挖掘、据可视化、异构据、征信、增强现实、混合现实、虚拟现实、云计算、流计算、图计算、内存计算、多方安全计算、类脑计算、绿色计算、认知计算等300+词频

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧