图中的这段代码求求100以内的素数代码有错吗?

求100以内的素数代码是除1和它本身沒有其他的因子分析:先是for
语句中n从2到100这表示从1-100内的范围。第二个for
语句是i从2到n-1分别试商(n%i是表示取n除i的余数值为0
当能够整除是这个数就鈈是求100以内的素数代码用break语句跳出本层循环(for
)如果从2到n-1都没有整除的情况那i=n-1是不循环但仍然要再运算i++最后i=n
,判断i==n则num加1(num的作用是控制每行輸出5个数)(printf("\n")起换行的作用)


用筛选法吧,10000的都不是问题几秒就搞定!

/* 用了筛选法来求 */
/* i从3开始筛选,如果不是求100以内的素数代码则num[i]置1,表示了相应的数不是*/
/*如果是求100以内的素数代码那么i是不置1,而它的所有倍数将不是求100以内的素数代码了要置1*/
/*每次增2,这样排除偶数*/
if (num[i]==1) /*表示被筛去那它不是求100以内的素数代码了,则不它为种子来筛*/
/* j从i的平方开始而不从i+i开始哦,这样更快因为那些已被筛去*/
/* 如i=5,則从25开始而不是从10,因为10是偶数15被3筛去,20也是*/
/*而j每次加二倍i不加i是防止筛去的是偶数因为偶数在下面打出就能去掉*/


这样就能求到1-100以内的求100以内的素数代码了,呵呵

数组a你只定义了99个也就是0-98,而伱要给a[99]a[100]赋值,明显错误

你对这个回答的评价是?

我要回帖

更多关于 代码求素数 的文章

 

随机推荐