程序設(shè)計(jì)求任意數(shù)后面的的任意個(gè)素?cái)?shù)存在數(shù)組中
先看代碼和運(yùn)行結(jié)果
重點(diǎn)是第一張圖是我們考試要寫的部分
首先我們寫一個(gè)新函數(shù) pri函數(shù) pri(y)如果y是素?cái)?shù)返回值一 y不是素?cái)?shù)返回值0 然后用這個(gè)函數(shù)求 假設(shè)我們輸入 17 5 第一個(gè)需要檢驗(yàn)的就是18是不是素?cái)?shù) 發(fā)現(xiàn)不是 不是的話返回值不是1就不會(huì)存入 然后看i=19 19是素?cái)?shù)存入數(shù)組 然后數(shù)組下標(biāo)先是xx【0】=19然后下標(biāo)x自+1 x也就是為1 然后x【1】=23 最后x【4】=37 x再自+=5 設(shè)置循環(huán)結(jié)束條件 x==k break 17 5都是我們輸入的參數(shù) 那么這題解決了 下面我們來(lái)看一個(gè)錯(cuò)誤的解法 錯(cuò)誤使用了break語(yǔ)句
我們來(lái)分析核心部分第二個(gè)圖的錯(cuò)誤 為什么10它不是素?cái)?shù)也會(huì)被打印出來(lái) 因?yàn)閎reak語(yǔ)句是終止內(nèi)層循環(huán) 終止后不會(huì)立刻返回外循環(huán)迭代條件而是會(huì)執(zhí)行內(nèi)循環(huán)結(jié)束后外循環(huán)認(rèn)下的語(yǔ)句 所以10 在break后任然會(huì)進(jìn)入下面的打印語(yǔ)句被打印出來(lái) 所以這個(gè)程序是錯(cuò)的 printf放到前面也不行 補(bǔ)充 剛剛我們說那個(gè)用break語(yǔ)句的代碼是錯(cuò)的 錯(cuò)因就是break結(jié)束內(nèi)循環(huán)后無(wú)法直接返回外循環(huán)迭代條件 而是會(huì)執(zhí)行外循環(huán)在內(nèi)循環(huán)結(jié)束后下面的語(yǔ)句 這是錯(cuò)誤的根源 那如果我們非要用break語(yǔ)句行不行 也是可以的 把內(nèi)循環(huán)后面不設(shè)置語(yǔ)句這樣內(nèi)循環(huán)后面自動(dòng)就是外循環(huán)迭代條件了 比如我們現(xiàn)在來(lái)看 求1- 100之間的素?cái)?shù)并把它們存儲(chǔ)在數(shù)組a中這個(gè)程序
因?yàn)? 2不是素?cái)?shù)所以i從三開始 這個(gè)程序設(shè)置雙循環(huán) 如果檢測(cè)到一次i被整除立即結(jié)束內(nèi)循環(huán)由于內(nèi)循環(huán)后面沒語(yǔ)句所以返回迭代條件(?) 并且如果一直找不到整除的 一直執(zhí)行到j(luò)=i-1 那么就把i賦值給數(shù)組元素也就是a【x】=i 然后x++ 不斷增加數(shù)組下標(biāo)然后賦值 最后打印數(shù)組 這一步為什么i<=(x-1)呢 因?yàn)楫?dāng)最后一個(gè)i被存入數(shù)組a【】后x又自加了1 x最終值為數(shù)組最大下標(biāo)加一 所以i最大值為x-1 這樣就能打印出數(shù)組所有元素了 x也就是1-100內(nèi)素?cái)?shù)個(gè)數(shù)(因?yàn)閿?shù)組下標(biāo)是從0開始)