| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1291 人关注过本帖
标题:判断是不是素数
只看楼主 加入收藏
xiawengxing
Rank: 2
来 自:内蒙古
等 级:论坛游民
帖 子:33
专家分:42
注 册:2010-4-2
结帖率:100%
收藏
 问题点数:0 回复次数:16 
判断是不是素数
程序代码:
#include <stdio.h>
void main()
{
    int i,n,z;
    printf("请输入n:");
    scanf("%d",&n);
    if(n==1)
        printf("%d不是素数.\n",n);
    if(n==2)
        printf("%d是素数.\n",n);
    for(i=2;2<n;++i)
    {
        if(n/i==0)
        {
            z=0;
            break;
        }
        else z=1;
    }
    if(z==1)
     printf("%d是素数.\n",n);
    else printf("%d不是素数.\n",n);
}
这个程序不对啊      

我改了一下请问还能更简化点吗?
程序代码:
#include <stdio.h>//判断n是不是素数
void main()
{
    int i,n,z;
    printf("请输入n:");
    scanf("%d",&n);
    if(n==1)
        z=0;
    if(n==2)
        z=1;
    for(i=2;i<n;i++)
    {
        if(n%i==0)
        break;
        else z=1;
    }
    if(z==1)
     printf("%d是素数.\n",n);
    else printf("%d不是素数.\n",n);

}

我把程序重新写了一下  简化了好多
程序代码:
#include <stdio.h>//判断n是不是素数
void main()
{
    int i,j;
    printf("请输入要判断的数:");
    scanf("%d",&i);
    for(j=2;j<i;++j)
        if(i%j==0) break;
        if(i==j) printf("%d是素数\n",i);
        else printf("%d不是素数\n",i);
}



[ 本帖最后由 xiawengxing 于 2010-4-17 17:20 编辑 ]
搜索更多相关主题的帖子: 判断 素数 
2010-04-16 19:53
BINGQING
Rank: 2
来 自:武汉
等 级:论坛游民
帖 子:98
专家分:75
注 册:2010-3-29
收藏
得分:0 
for(i=2;2<n;++i)
应该是:
for(i=2;i<n;i++) 吧
2010-04-16 20:04
xiawengxing
Rank: 2
来 自:内蒙古
等 级:论坛游民
帖 子:33
专家分:42
注 册:2010-4-2
收藏
得分:0 
回复 2楼 BINGQING
还是不对啊
2010-04-16 20:16
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:0 
main()
{
 int i,n;
 printf("Please input number\n");
 scanf("%d",&n);
 for(i=2;i<=n;i++)
  if(n%i==0)
  break;
  if(i<n||n==1)
  printf("%d is not prime number\n",n);
  else
  printf("%d is prime number\n",n);
  getch();
}

楼主可以看看这个,正好前天写这个,看来我们都是刚学的,一起努力
2010-04-16 20:19
共饮长江水
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:47
注 册:2010-3-16
收藏
得分:0 
#include<stdio.h>
#include<math.h>
main()
{
int n,i;
float disc;
scanf("%d",&n);
disc=sqrt(n);
for(i=2;i<=disc;i++)
{
if(n%i==0) break;
}
if(i>disc)
printf("%d is ",n);
else
printf("%d is not ",n);
printf("a prime number");
}
谭浩强编的教科书上有的
2010-04-16 20:28
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:0 
建议不要看书上的答案,书上的答案,只要理解算法就可以,尽量自己写。
另外楼主的程序,有一些冗余判断,和我前天一样,其实完全可以简化。
2010-04-16 20:30
蓝天依笑
Rank: 2
等 级:论坛游民
帖 子:47
专家分:58
注 册:2010-4-16
收藏
得分:0 
#include <stdio.h>
void main()
{int i,n,z;
    printf("请输入n:");
    scanf("%d",&n);
    if(n==1)
        printf("%d不是素数.\n",n);
    if(n==2)
        printf("%d是素数.\n",n);
    for(i=2;i<n;i++)   这里应该是i<n,而不是2<n
    {if(n%i==0)   这里应该是"%",而不是"/"
        {z=0;break;}
     else z=1;
    }
    if(z==1) printf("%d是素数.\n",n);
    else printf("%d不是素数.\n",n);
}
2010-04-16 20:39
xiawengxing
Rank: 2
来 自:内蒙古
等 级:论坛游民
帖 子:33
专家分:42
注 册:2010-4-2
收藏
得分:0 
回复 6楼 account
请具体说说
2010-04-16 20:39
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:0 
回复 8楼 xiawengxing
我写的代码已经有了啊,其实思想和你的是完全一样的,排除你输入的文字错误,首先你对于1,2的单独处理并且printf就会造成重复输出,因为程序是顺序的,你下面还会判断非1,2如何处理,所以你就算1,2单独处理,也要用goto,但用goto会破坏程序美感与结构。
2010-04-16 20:55
xiawengxing
Rank: 2
来 自:内蒙古
等 级:论坛游民
帖 子:33
专家分:42
注 册:2010-4-2
收藏
得分:0 
回复 9楼 account
请问你的这个程序中  getch();  是什么意思  我用vc6.0运行错误 把getch();去掉才对。
2010-04-16 21:01
快速回复:判断是不是素数
数据加载中...
 
   



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

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