Visual_Basic 板


LINE

首先 count部份也是错的,基本上你的逻辑就错了。 所以记得要写注解,不然有时我还很难看出你在想什麽 ? XD : : ===程式段结束=== : : 其中,TextBox输入一个大於3的数, : : 它就会在ListBox中列出1~输入数的所有质数。 : 先抱歉翻这麽旧的文出来发问 : 我做的方法是 : ===程式段开始=== : Module Module1 : Sub Main() : Dim input, temp, n, k, s, x, count As Integer : Dim array(100, 0) 如果你想宣告一维阵列 用dim array(100) 即可 这里可以看出 你应该是刚学VB吧? 但相信我 如果你是求 2-10000间的质数 一定不够放的 可以dim array(10000) : s = 0 : count = 0 : Console.Write("请输入一个2~10000的整数 ") : input = Console.ReadLine : For temp = 2 To input : k = 0 这里你只设n= 2 to 100 代表你也只能正确的求出 101内的正确质数 可以试着设 n= 2 to input-1 但这里不是错误的重点 : For n = 2 To 100 你这里把 temp mod n=0 这是指该数能被小於他的数整除 放入阵列里 逻辑就是错误的了 : If n < temp And temp Mod n = 0 Then : k += 1 : array(s, 0) = temp : s += 1 : End If : Next : If k = 1 Then : count += 1 : End If : Next : Console.WriteLine("所包含的质数有") : For x = 0 To s Step 1 : Console.WriteLine(x, 0) 这里印出的也不对 你要印出的应该是 console.writeline(array(x,0)) or console.writeline(array(x)) array中的值,而不是编号,所以你array不熟写这程式就麻烦了一点 虽然说不太用到阵列 你这边写对就可以知道你array输出的值都是些重覆且非质数的值 : Next : Console.WriteLine("共" & count & "个") : Console.ReadKey() : End Sub : End Module : ====程式段结束=== : 须做出输入1~10000的数 得出所输入的数的所有质数 并计共有几个质数 : 绿字为计次部份 : 红字为求质数部份 : 我写的 计次部份没有问题 : 可是求质数部份 怎麽跑都不对 : 能某请大大们替我解答一下 哪里错了? 但你的观念只要改一改一小段 至少 100以内的质数是能求出来的 '程式开始 发亮为修改过 Module Module1 Sub Main() Dim input, temp, n, k, s, x, count As Integer Dim array(100, 0) s = 0 count = 0 Console.Write("请输入一个2~10000的整数 ") input = Console.ReadLine For temp = 2 To input k = 0 For n = 2 To 100 If n < temp And temp Mod n = 0 Then k += 1 End If Next If k = 0 Then '确定不是质数 即放入阵列 array(s, 0) = temp s += 1 count += 1 End If Next Console.WriteLine("所包含的质数有") For x = 0 To s Step 1 Console.WriteLine(array(x, 0)) Next Console.WriteLine("共" & count & "个") Console.ReadKey() End Sub End Module '程式结束 不用阵列的写法 Module Module1 Sub Main() Dim x, y, input, checked, count As Integer count = 0 ' 设定count初值 Console.Write("请输入一个2~10000的整数 ") input = Console.ReadLine() '寻找质数范围终点 Console.WriteLine("从2~" & input & "中有以下质数:") Dim sw As New Stopwatch '码表 sw.Start() For x = 2 To input '对范围内每个数做质数检查 checked = 0 ' 预设checked为0 , 表示没被 大於1取小於该数的数整除 For y = 2 To x - 1 ' 土法链钢 对大於1且小於该数的整数做除法 If x Mod y = 0 Then checked = 1 '如果能被整除 即checked=1 , 该数不为质数 Exit For ' 确定不是质数就可以闪了,这段也可注解掉,你看看时间有没有差XD End If Next If checked = 0 Then '全部做完後 如果checked=0 ,该数为质数,输出 且 count + 1 Console.WriteLine("{0}", x) count += 1 End If Next sw.Stop() Console.WriteLine("耗时: " & sw.Elapsed.ToString) Console.WriteLine("共" & count & "个") '输出count Console.ReadLine() End Sub End Module 你想要追求效率可以改写成公式解求法 应该会快很多~慢慢研究呗。 ※ 编辑: humanfly 来自: 122.117.128.13 (09/27 13:24) ※ 编辑: humanfly 来自: 122.117.128.13 (09/27 13:34) ※ 编辑: humanfly 来自: 122.117.128.13 (09/27 13:35)
1F:推 dk3208:可以再加一个小地方,超过欲判断数值的一半就可以EXIT回圈了 09/28 00:58
2F:推 dk3208:也就是内回圈只跑到x/2就可以了 09/28 01:00
3F:推 xtimer:因为我要列的是一个质数一行 所以必须要用到2维阵列 09/29 14:00







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灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP