| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 612 人关注过本帖
标题:关于100以内素数的问题 我个人觉得逻辑上是对的,但是结果就是不对,不明白
只看楼主 加入收藏
mucshisan
Rank: 2
等 级:论坛游民
帖 子:29
专家分:19
注 册:2009-8-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
关于100以内素数的问题 我个人觉得逻辑上是对的,但是结果就是不对,不明白


#include<stdio.h>
main()
{
int a[100] ;
int i,j;
for(i=1;i<100;i++)
{    a[i-1]=i;
    for(j=1;j<=i;j++)
   {
         if(j<i)

           if(a[i-1]%j==0)break;
           if(a[i-1]-j==0)
             printf("%5d",a[i-1]);
   }
 }

 }
搜索更多相关主题的帖子: 素数 逻辑 结果 
2009-09-13 15:17
LBY318902435
Rank: 2
来 自:江苏南京
等 级:论坛游民
帖 子:76
专家分:48
注 册:2009-3-31
收藏
得分:20 
把内层for循环的j=1改为j=2。另外内层for中的 if(j<i)可以不要。在你代码的基础上改为如下:
#include<stdio.h>
void main()
{
    int a[100] ;
    int i,j;
    for(i=1;i<100;i++)
    {
       a[i-1]=i;
       if(j<i)
       for(j=2;j<=i;j++)
          if(a[i-1]%j==0)break;
       if(a[i-1]-j==0)
           printf("%5d",a[i-1]);
    }
}

走自己的路……
2009-09-13 15:56
LBY318902435
Rank: 2
来 自:江苏南京
等 级:论坛游民
帖 子:76
专家分:48
注 册:2009-3-31
收藏
得分:0 
你原来的程序总是输出 1.是因为内层for中j从1开始。而任何数对1求余都为0,故if(a[i-1]%j==0)break;总是执行。
你去看看素数的概念吧。

走自己的路……
2009-09-13 16:01
mucshisan
Rank: 2
等 级:论坛游民
帖 子:29
专家分:19
注 册:2009-8-25
收藏
得分:0 
  恩 明白了 非常感谢
2009-09-16 21:31
快速回复:关于100以内素数的问题 我个人觉得逻辑上是对的,但是结果就是不对,不 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018014 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved