首页 新闻 会员 周边 捐助

新手c#关于素数的疑问

0
悬赏园豆:5 [已解决问题] 解决于 2013-06-14 15:52
namespace 输出1_100之间的素数
{
    class Program
    {
        static void Main(string[] args)
        {
            int j, i;
            for (i = 2; i <= 100; i++)
            {
                for (j = 2; j <= i; j++)
                {
                    if (i % j == 0)
                        break;         
                
                }
                if (j > (i / 2)) //这句话是什么意思?,为什么这样判断?
                    Console.WriteLine("素数: " + i);
            }
        }
    }
}
小花晋的主页 小花晋 | 菜鸟二级 | 园豆:202
提问于:2013-06-14 15:06
< >
分享
最佳答案
1

首先,得从素数的定义说起:指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。

接着:就判断是否整除,从内部的for循环中,

if (i % j == 0)
                        break; 
必然会有一个j满足条件。如果是素数,那么这个j肯定是和i相等的。所以用最后一个条件判断是否是素数了。
收获园豆:5
幻天芒 | 高人七级 |园豆:37207 | 2013-06-14 15:31
其他回答(3)
0

你猜

oO春沫夏初Oo | 园豆:202 (菜鸟二级) | 2013-06-14 15:19

不猜!

支持(0) 反对(0) 小花晋 | 园豆:202 (菜鸟二级) | 2013-06-14 15:29
0

 if (j > (i / 2))  这句我觉的是写程序的人想多了,j>=i就行。

依依-程序员 | 园豆:202 (菜鸟二级) | 2013-06-14 15:56

真想把豆豆给你!我试了,你的j>=i更好理解!

支持(0) 反对(0) 小花晋 | 园豆:202 (菜鸟二级) | 2013-06-14 16:04

@小花晋: 你不觉的j==i更好理解吗?(除了1和此整数自身外)。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2013-06-15 12:25
0

如果j>(i/2),表示循环了全部条件,都没找到 i%j==0的数,那么这个i就是素数了

erythrocyte | 园豆:184 (初学一级) | 2013-06-14 16:00

你晚了!

支持(0) 反对(0) 小花晋 | 园豆:202 (菜鸟二级) | 2013-06-14 16:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册