vb将任何一个大于5的奇数与素数的个数分解为三个素数

欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 15085 人关注过本帖
标题:给出一个大于或等于 3 的正整数,判断它是不是一个素数
用C语言编程
等 级:新手上路
&&问题点数:0&&回复次数:11&&&
给出一个大于或等于 3 的正整数,判断它是不是一个素数
用C语言编程
给出一个大于或等于3的正整数,判断它是不是一个素数&&&用C语言编程
我编的程序有错误,求大神指点!!!!
#include&stdio.h&
int main()
&&& int n,i=2;
&&& printf(&从键盘输入一个数n:&);
&&& scanf(&%d&,&n);
&&& for(i=2;i&=n-1;i++)
&&&&&&&&if(n%i==1)
&&&&&&&&&&&&printf(&n是素数&);
&&&&&&&&&&&&
&&& if(n%i==0)
&&&&&&&&&&&&printf(&n不是素数&);
&&&&&&&&&&&&&&&
&&&&&&&&}&&&
搜索更多相关主题的帖子:
等 级:新手上路
#include&stdio.h&
int main()
&&& int n,i=2;
&&& printf(&从键盘输入一个数n:&);
&&& scanf(&%d&,&n);
&&& if(n%i==0)
&&&&&&&&&&&&printf(&n不是素数&);
&&&&&&&&&&&&&&&
&&&&&&&&}&&&
&&& for(i=2;i&=n-1;i++)
&&&&&&&&if(n%i==1)
&&&&&&&&&&&&printf(&n是素数&);
&&&&&&&&&&&&
来 自:大汉
等 级:贵宾
威 望:17
帖 子:769
专家分:6207
2楼的程序不是可以运行,没有错误吗???
只要心是晴朗的,人生就没有雨天。
等 级:贵宾
威 望:304
帖 子:25793
专家分:48814
最有效和直接的方法,就是查素数表,啥技术都不用,而且超高效。
授人以渔,不授人以鱼。
来 自:芒砀古郡
等 级:蜘蛛侠
帖 子:332
专家分:1177
回复 4 楼 TonyDeng
c语言交流群大家可以加下一起分享成长
等 级:贵宾
威 望:27
帖 子:2721
首先, 你要搞清楚素数的定义:
质数,又称素数,指在大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数。
来源: http://zh.wikipedia.org/wiki/素数
所以验证一个数n是不是素数的基本方法, 就是用所有[2,n-1]范围内的数去试除, 如果能整除, 说明这个数不是素数, 如果所有的数都不能整除, 那么这个数就是素数
然后看C语言如何验证a是否可以被b整除, 这个你是知道的, 就是
if (a % b == <font color=#) { ... }
接下来是要用到循环了, 这个看来对你也不是问题
程序代码:
for (i = <font color=#; i & n - <font color=#; ++i)
&&if (n % i == <font color=#)
你的程序的主要问题, 在于对判断逻辑的处理
素数的要求是, 所有[2,n-1]范围的数都不能整除, 也就是说, 只要有任何一个数能整除, n就不是素数
对于这种类型的问题, 一般用一个变量来记录判断的结果
程序代码:
int is_prime = <font color=#;&&
for (i = <font color=#; i & n - <font color=#; ++i)
&&if (n % i == <font color=#)
&&& is_prime = <font color=#;
&&& break;
最主要的思想就是:
你在循环体里面, 只能确定判断出一个数不是素数, 但无法确定一个数肯定是素数
只有当所有不是素数的判断都失败了, 才能确认这个数是素数
现在可以通过判断is_prime这个变量的值, 来确定n是不是素数了
程序代码:
if (is_prime == <font color=#)
&&printf(&%d 不是素数\n&, n);
&&printf(&%d 是素数\n&, n);
至此, 判断素数的基本方法已经完成, 完整的程序就需要你自己来完成了
但是要注意上面的程序还有很多可以改进的地方, 比如:
1. 判断素数这是一个独立的功能, 可以封装成一个函数, 这样以后修改的时候, 会方便很多
2. 实际上不需要试除[2,n-1], 只要试除[2,sqrt(n)]就可以了
最后, 是关于效率的问题, 这需要具体问题具体分析, 得知道数据规模和可用资源, 才能确定一种最优的办法, 这就不是几十页纸能讲清楚的了, 如果感兴趣的话, 可以求助Google大神
从BFS(Breadth First Study)到DFS(Depth First Study)
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
以下是引用永夜的极光在 13:02:35的发言:
首先, 你要搞清楚素数的定义:
所以验证一个数n是不是素数的基本方法, 就是用所有[2,n-1]范围内的数去试除, 如果能整除, 说明这个数不是素数, 如果所有的数都不能整除, 那么这个数就是素数
然后看C语言如何验证a是否可以被b整除, 这个你是知道的, 就是
if (a % b == 0) { ... }
接下来是要用到循环了, 这个看来对你也不是问题
for (i = 2; i & n - 1; ++i)
&&if (n % i == 0)
你的程序的主要问题, 在于对判断逻辑的处理
素数的要求是, 所有[2,n-1]范围的数都不能整除, 也就是说, 只要有任何一个数能整除, n就不是素数
对于这种类型的问题, 一般用一个变量来记录判断的结果
int is_prime = 1;&&&
for (i = 2; i & n - 1; ++i)
&&if (n % i == 0)
&&& is_prime = 0;
最主要的思想就是:
你在循环体里面, 只能确定判断出一个数不是素数, 但无法确定一个数肯定是素数
只有当所有不是素数的判断都失败了, 才能确认这个数是素数
现在可以通过判断is_prime这个变量的值, 来确定n是不是素数了
if (is_prime == 0)
&&printf(&%d 不是素数\n&, n);
&&printf(&%d 是素数\n&, n);
至此, 判断素数的基本方法已经完成, 完整的程序就需要你自己来完成了
但是要注意上面的程序还有很多可以改进的地方, 比如:
1. 判断素数这是一个独立的功能, 可以封装成一个函数, 这样以后修改的时候, 会方便很多
2. 实际上不需要试除[2,n-1], 只要试除[2,sqrt(n)]就可以了
最后, 是关于效率的问题, 这需要具体问题具体分析, 得知道数据规模和可用资源, 才能确定一种最优的办法, 这就不是几十页纸能讲清楚的了, 如果感兴趣的话, 可以求助Google大神
大神您来了
等 级:贵宾
威 望:27
帖 子:2721
以下是引用zklhp在 13:03:50的发言:
大神您来了
我离大神的境界还差远了
好久没上论坛了, 今天偶然路过, 留下一点脚印, 希望能帮助到楼主
从BFS(Breadth First Study)到DFS(Depth First Study)
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
以下是引用永夜的极光在 13:10:22的发言:
我离大神的境界还差远了
好久没上论坛了, 今天偶然路过, 留下一点脚印, 希望能帮助到楼主
欢迎您常回来看看
来 自:江西省赣州市于都县
等 级:业余侠客
帖 子:119
专家分:233
高手也来了
版权所有,并保留所有权利。
Powered by , Processed in 0.093384 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
求证:任何大于5的奇数都是三个素数之和
王者刘忻5wG
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
哥德巴赫猜想大致可以分为两个猜想:■1.每个不小于6的偶数都是两个奇素数之和;■2.每个不小于9的奇数都是三个奇素数之和.【哥德巴赫相关】哥德巴赫(Goldbach C.,~)是德国数学家;出生于格奥尼格斯别尔格(现名加里宁城);曾在英国牛津大学学习;原学法学,由于在欧洲各国访问期间结识了贝努利家族,所以对数学研究产生了兴趣;曾担任中学教师.1725年到俄国,同年被选为彼得堡科学院院士;1725年~1740年担任彼得堡科学院会议秘书;1742年移居莫斯科,并在俄国外交部任职.【歌德巴赫猜想来源】1729年~1764年,哥德巴赫与欧拉保持了长达三十五年的书信往来.在日给欧拉的信中,哥德巴赫提出了一个命题.他写道:"我的问题是这样的:随便取某一个奇数,比如77,可以把它写成三个素数之和:77=53+17+7;再任取一个奇数,比如461,461=449+7+5,也是三个素数之和,461还可以写成257+199+5,仍然是三个素数之和.这样,我发现:任何大于5的奇数都是三个素数之和.但这怎样证明呢?虽然做过的每一次试验都得到了上述结果,但是不可能把所有的奇数都拿来检验,需要的是一般的证明,而不是个别的检验."欧拉回信说,这个命题看来是正确的,但是他也给不出严格的证明.同时欧拉又提出了另一个命题:任何一个大于2的偶数都是两个素数之和.但是这个命题他也没能给予证明.不难看出,哥德巴赫的命题是欧拉命题的推论.事实上,任何一个大于5的奇数都可以写成如下形式:2N+1=3+2(N-1),其中2(N-1)≥4.若欧拉的命题成立,则偶数2(N-1)可以写成两个素数之和,于是奇数2N+1可以写成三个素数之和,从而,对于大于5的奇数,哥德巴赫的猜想成立.但是哥德巴赫的命题成立并不能保证欧拉命题的成立.因而欧拉的命题比哥德巴赫的命题要求更高.现在通常把这两个命题统称为哥德巴赫猜想.这道著名的数学难题引起了世界上成千上万数学家的注意.200年过去了,没有人证明它.哥德巴赫猜想由此成为数学皇冠上一颗可望不可及的"明珠".人们对哥德巴赫猜想难题的热情,历经两百多年而不衰.世界上许许多多的数学工作者,殚精竭虑,费尽心机,然而至今仍不得其解.到了20世纪20年代,才有人开始向它靠近.1920年挪威数学家布朗用一种古老的筛选法证明,得出了一个结论:每一个比大偶数n(不小于6)的偶数都可以表示为(99).这种缩小包围圈的办法很管用,科学家们于是从(9十9)开始,逐步减少每个数里所含质数因子的个数,直到最后使每个数里都是一个质数为止,这样就证明了哥德巴赫猜想.目前最佳的结果是中国数学家陈景润于1966年证明的,称为陈氏定理:“任何充分大的偶数都是一个质数与一个自然数之和,而后者仅仅是两个质数的乘积.”通常都简称这个结果为大偶数可表示为 “1 + 2”的形式.【哥德巴赫猜想意义】“用当代语言来叙述,哥德巴赫猜想有两个内容,第一部分叫做奇数的猜想,第二部分叫做偶数的猜想.奇数的猜想指出,任何一个大于等于7的奇数都是三个素数的和.偶数的猜想是说,大于等于4的偶数一定是两个素数的和.”(引自《哥德巴赫猜想与潘承洞》) 关于哥德巴赫猜想的难度我就不想再说什么了,我要说一下为什么现代数学界对哥德巴赫猜想的兴趣不大,以及为什么中国有很多所谓的民间数学家对哥德巴赫猜想研究兴趣很大.事实上,在1900年,伟大的数学家希尔伯特在世界数学家大会上作了一篇报告,提出了23个挑战性的问题.哥德巴赫猜想是第八个问题的一个子问题,这个问题还包含了黎曼猜想和孪生素数猜想.现代数学界中普遍认为最有价值的是广义黎曼猜想,若黎曼猜想成立,很多问题就都有了答案,而哥德巴赫猜想和孪生素数猜想相对来说比较孤立,若单纯的解决了这两个问题,对其他问题的解决意义不是很大.所以数学家倾向于在解决其它的更有价值的问题的同时,发现一些新的理论或新的工具,“顺便”解决哥德巴赫猜想.例如:一个很有意义的问题是:素数的公式.若这个问题解决,关于素数的问题应该说就不是什么问题了.为什么民间数学家们如此醉心于哥猜,而不关心黎曼猜想之类的更有意义的问题呢?但是,自然数是无限的,是不是这个论断对所有的自然数都正确呢?还必须从理论上加以证明,哥德巴赫自己无法证明.1742年,他写信给当时有名的数学家欧拉,请他帮忙作出证明.后来欧拉回信说:“他认为哥德巴赫提出的问题是对的,不过他没有办法证明.因为没能证明,不能成为一条规律,所以只能说是一个猜想,人们就把哥德巴赫提出的那个问题称为“哥德巴赫猜想”.
为您推荐:
其他类似问题
扫描下载二维码算法(604)
分类:&&83人阅读&&&
哥德巴赫猜想:任何一个大于2的偶数,都可以表示为两个素数之和。
另外还有,任何一个大于5的奇数都可以表示为三个素数之和。
题意:给定一个正整数n,范围是[2,10^9],把n表示为若干个素数的和,输出一种方案,使得素数的个数最少。
分析:如果n是素数,那么直接输出它即可;
&&&& 否则如果n是大于2的偶数,那么根据哥德巴赫猜想它可以表示为两个素数之和,可以用Miller_Rabin判断;
&&&& 否则,n就只能是奇数且非素数,那么对于任意一个大于5的奇数,我们先判断它是否是2和一个素数的和,即判断n-2是
&&&& 否是素数,如果是,那么就可以表示为两个素数相加
&&&& 否则我们可以把它表示为3个素数之和。n-3&#43;3=n,注意3是素数,而且n-3是偶数,这样我们可以把n表示n=p1&#43;p2&#43;3.
所以经过上面的分析,对于任意一个正整数n,我们最多可以用3个素数之和来表示它。
一般来说,对于一个大于2偶数n,范围在[4,10^9],表示为两个素数之和后,小的那个素数不会很大,所以我们可以在区间
[2,100000]里面枚举素数就可以了。
题目描述:哥德巴赫猜想认为任一大于2的偶数,都可表示成两个素数之和,比如
6 = 2&#43;2&#43;2
6 = 3&#43;3
10 = 2&#43;2&#43;2&#43;2&#43;2
10 = 2&#43;2&#43;3&#43;3
10 = 2&#43;3&#43;5
10 = 3&#43;7
像3&#43;7与7&#43;3只有顺序不一样的认为是一种方式
问:给定一个10000以内的偶数,将它表示为素数的和有几种方式?
分析:相当于求以质数为物品体积,背包容量为10000的,可以重复选择的背包,设p[i]是第i个质数,dp[i][n]表示把正整
数n拆分为不大于p[i]的若干质数和的方案数,则有dp[i][n]=dp[i-1][n]&#43;dp[i][n-p[i]]
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4093332次
积分:36351
积分:36351
排名:第106名
原创:22篇
转载:1920篇
评论:485条
(37)(14)(28)(148)(78)(74)(36)(80)(90)(42)(139)(241)(117)(357)(181)(63)(56)(57)(5)(47)(1)(30)(23)

我要回帖

更多关于 素数就是奇数 的文章

 

随机推荐