C_and_CPP 板


LINE

※ 引述《iwantnasa (红发杰克)》之铭言: : 我想知道1~10000之间的质数用C++如何找 : 老师建议用辗转相除法 : BUT我一点头绪都没有 : 目前只会FOR回 圈和DO-while : 不会副程式 : 各位能用简单的程式教教我吗? #include <stdio.h> int main(){ //-- 先设一个很大的阵列用来放质数 int p[10000]; //--在宣告一个int变数来记录已经放了多少个质数 int n=2; //--宣告回圈所需的index int num,i; //--宣告一个state记录是否为PRIME int prime; //--然後先把2跟3放入 p[0]=2; p[1]=3; //--根据质数的定义除了1跟自己以外没有其他的因数 // =>不会被小於自己的质数整除 //用回圈来控制此条件 for(num=4;num<10000;num++){ //小於10000的数中依序取一数num for(prime=1,i=0;i<n;i++){ //在比num小已知的prime number数列中 if( num%p[i] == 0){ //如果取余数为零(整除) prime=0; //则不为质数 break; } } if(prime == 1){ //如果在比num小已知的prime number数列中都不能整除 p[n++]=num; //则num为余数,n个数+1 } } for(i=0;i<n;i++) fprintf(stdout,"%5d",p[i]); return 0; } ps. 这只是我想到的一种方法而已,当然也可以不要储存利用GCD来求..... 例如,一个数n为质数 => GCD(n,i)=1,for all 1<i≦√n i为整数 很多解法......都可以达到同样效果~多练习看看罗~ --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.121.213.202
1F:推 revivalworld:建议把 sqrt() 用进去, 还有回圈的 num++改成 num+=2 04/08 10:24
2F:→ revivalworld:这个演算法似乎太暴力了点- -" 04/08 10:26
3F:推 revivalworld:再给一个建议, 听过质数的规谬证明吧 04/08 10:28
4F:→ revivalworld:你可以把已知的质数乘起来 然後+1 就是一个新的质数 04/08 10:29
5F:→ revivalworld:当然要从最小的2开始乘,中间不可漏掉任何质数 04/08 10:30
6F:→ revivalworld:嗯...是"归谬" 04/08 10:31
7F:→ revivalworld:话说质数证明好像跟这篇没太大关系...不要理我Orz 04/08 10:33
8F:推 ledia:全乘起来+1 还是质数是错的 2*3*5*7*11*13+1 = 59*509 04/08 12:26
9F:→ ledia:不要误导别人.... 04/08 12:27
10F:推 ledia:你可能搞不清楚归谬的本质 04/08 12:34
11F:→ compbell:楼上是对的,上述证法有假设"质数为有限个",然後得矛盾 04/08 13:06
12F:→ compbell:但可没说已知的质数乘起来+1会是质数 04/08 13:08
13F:推 xcycl:冼镜光《C名题精选百则》有很详尽的讨论 @@ 04/08 13:49
14F:→ xcycl:不过才一万个, 暴力法也是瞬间解吧 XD 04/08 13:50
15F:推 revivalworld:对不起...我搞错了 04/08 14:20
16F:推 revivalworld:谢谢您指出来 04/08 14:23
17F:推 revivalworld:再推一次表示歉意 04/08 14:28
18F:推 iwantnasa:能用辗转吗? 04/08 17:35
19F:推 slalala:可辗转喔~更快~~如果现在的CPU跟RAM很小很慢 暴力法会?!XD 04/08 18:04
20F:推 BETNPP:嗯....用+=2的确会快近两倍,不过我只是单纯的用数学的判断 04/09 15:08
21F:→ BETNPP:慢慢的推而已,我想应该有更好更快的演算法..... 04/09 15:10
※ 编辑: BETNPP 来自: 220.133.102.247 (04/09 15:18)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP