java 判断素数101-200之间输出所有素数

java问题,判断101到200之间的质数并且打印出来_百度知道找好工作,快人一步问题二十:101-200之间有多少个素数,并输出所有素数。
/***************************************************************&&&&&&&&&&&&&&&&&&
*****auther: liuyongahui
*******date:
***language: C&&&&&&&&&&&&&
&***************************************************************/
&&&& 问题二十:101-200之间有多少个素数,并输出所有素数。
#include &stdio.h&
int main()
&&&&&& //做标记
&&&& int num=0;&& //计数
&&&& int a[100];&& //存储素数
&&&& for(i=101; i&200; i++)
&&&&&&&& flag=1;
&&&&&&&& for(j=2; j&=i/2; j++)& //i除与2-i/2的数来验证是否为素数
&&&&&&&& {&&
&&&&&&&&&&&& if(i%j==0) //若能被整出,不是素数
&&&&&&&&&&&& {
&&&&&&&&&&&&&&& flag=0;&&&
&&&&&&&&&&&& }
&&&&&&&& }
&&&&&&&& if(flag)
&&&&&&&& {
&&&&&&&&&&& a[num++]=i;
&&&&&&&& }
&&&& printf(&有%d个素数,它们分别是:\n&, num);
&&&& for(i=0; i& i++)
&&&&&&&& printf(&%d\n&, a[i]);
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'> 判断101-200之间有多少个素数,并输出所有素数。哪位高手能帮忙详细的解释下这个程序
判断101-200之间有多少个素数,并输出所有素数。哪位高手能帮忙详细的解释下这个程序
liwg6666 & &
发布时间: & &
浏览:27 & &
回复:9 & &
悬赏:0.0希赛币
判断101-200之间有多少个素数,并输出所有素数。谁能帮忙详细的解释下这个程序判断101-200之间有多少个素数,并输出所有素数。1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,      则表明此数不是素数,反之是素数。       2.程序源代码:#include &math.h&main(){ int m,i,k,h=0,leap=1; printf(&\n&); for(m=101;m&=200;m++)  { k=sqrt(m+1);   for(i=2;i&=k;i++)     if(m%i==0)      {leap=0;}   if(leap) {printf(&%-4d&,m);h++;        if(h%10==0)        printf(&\n&);        }   leap=1;  } printf(&\nThe total is %d&,h);}leap这个变量有什么用红色的这一段是什么意思
就是为了看
这个是否成立。。这是很简单的if语句啊,大哥刚开始 leap = 1;
leap = 0; 了
之后break就跳出了哪个if语句很明显,接下来的
是错的,也就{
printf(&%-4d&,m);
h++;   if(h%10==0)  printf(&\n&);        }这里面的东西不执行了。。接下来又是
,其他的自己看吧
liwl5269 & &
13:04:52 & &
& & (0)(0)为了提高效率for(m=101;m&=200;m++)最好改成for (m = 101; m &= 200; m += 2)因为偶数肯定不是素数,所以
m += 2 可以剔除偶数其他的我就没多看,也就不知道怎么能更好的提高效率
liwnew & &
13:04:52 & &
& & (0)(0)for (m = 101; m &= 200; m += 2)改成for (m = 101; m & 200; m += 2)200肯定不是素数,就直接不用
liwoqianxiao & &
13:04:52 & &
& & (0)(0)为什么用sqrt(m)是因为,如果m是一个合数,那么它的所有因子都小于等于sqrt(m).所以你判断2到sqrt(m)次就够了,不用判断那么多次。
liwnew & &
13:04:52 & &
& & (0)(0)leap就相当于一个标志可以设置成bool类型。如果是0则不用判断了,直接跳出循环。可是在你这里貌似可以不用这个标志位..这个变量属于多余
liws2006 & &
13:04:52 & &
& & (0)(0)程序第4行为leap付初值leap=1(逻辑上的真)为下面的使用做准备下面看红色部分:    if(m%i==0)
//如果m能被i整除就把leap的值置为0,然后跳出
for(i=2;i&=k;i++)这个循环      {leap=0;}   if(leap) {printf(&%-4d&,m);h++;
//如果leap此时的值已经改变为0词语与逻辑为假直接跳过。如果此时leap的值为初始值1,则执行下面的语句块,输出m的值。h++的左右是计数(计算输出的素数的个数为下面的语句做准备)        if(h%10==0)
//如果h的值累积到能够被10整除的时候就输出换行,这样 做的好处是不会是输出的数据都堆在一行,而是没输出10个数据就自动换行。        printf(&\n&);        }   leap=1;  }
//在执行下一次for(m=101;m&=200;m++)循环时把leap的值有置为1,如此循环知道m的值大于200结束。最后统计输出100-200间素数的个数。希望可以帮到你
liwl5269 & &
13:04:52 & &
& & (0)(0)leap是判断m能不能被I整除的,如果整除,直接break进行下一次循环,否则,继续判断2到sqrt(这个数),如果一直不能整除得到一个解,每break一次,leap重置为1;
liworld14620 & &
13:04:52 & &
& & (0)(0)  C/C++ code  { k=sqrt(m+1);
// 从2开始,到一个数的平方根为止
   for(i=2;i&=k;i++)
     if(m%i==0)
      {leap=0;}
// 如果此数能被上述范围之数整除,则不是素数,
// 将标志位 leap 复位,退出
   if(leap) {printf(&%-4d&,m);h++; // 如果是素数,标志位 leap == 1, 左对齐,4位宽
        if(h%10==0)
// 每10个数字一行打印输出
        printf(&\n&);
        }
   leap=1;  }
liwoqianxiao & &
13:04:52 & &
& & (0)(0)这个题做的不对吧liwsy & &
13:04:52 & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&}

我要回帖

更多关于 java 判断素数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信