搜索
查看: 750|回复: 8
打印 上一主题 下一主题

给出一个大于三的正整数,判断是不是素数,不知道哪里错了,能详细的讲一下吗,谢谢!

[复制链接]
跳转到指定楼层
楼主
发表于 2014-7-1 01:12:35 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
给出一个大于三的正整数,判断是不是素数,不知道哪里错了,能详细的讲一下吗,谢谢!N-S图以给出,是按照这个图写的程序,不知道哪里出错,帮帮忙吧!非常感谢!!!
下面是程序:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int w,n,i;
double a;
    scanf("%d",&n);
    w=0;
    i=2;
    a=(double)n;
    while(i>sqrt(a)||(w!=0))
    {
     if (n%i==0)
     w=0;
     else
     i++;
    }
    if(w==0)
   printf("%d是素数\n",n);
   else
   printf("%d不是素数\n",n);
    system("pause");
    return 0;
}


2.jpg (44 KB, 下载次数: 10)

这是N-S图

这是N-S图
沙发
 楼主| 发表于 2014-7-2 01:17:55 | 显示全部楼层
981013 发表于 2014-7-1 13:38
首先17行f=0这句是f==0之误。
实际上试除到sqrt(a)就可以了,不过直接用sqrt函数不合适(这个函数接受和 ...

能把我写的程序基础上改正确吗?我一直不明白我错在哪里了!谢谢帮忙了!
板凳
 楼主| 发表于 2014-7-2 01:20:05 | 显示全部楼层
LeoGuozichuan 发表于 2014-7-1 12:43
你的程序貌似有些麻烦了。
首先我们要知道要判素数只要在这个数÷2的范围内试除,如果都除不尽就能判断它 ...

谢谢喽!但是我想知道我错在哪里,能在我写的基础上改正确吗?
地板
 楼主| 发表于 2014-7-4 21:31:42 | 显示全部楼层
981013 发表于 2014-7-2 12:37
你的N-S图中写到“直到i>sqrt(n)或w!=0”,也就是说当isqrt(a)||(w!=0))[/mw_shl_code]
应改为[mw_shl_cod ...

嗯嗯,我明白了!谢谢你!
5#
 楼主| 发表于 2014-7-4 21:36:10 | 显示全部楼层
rosynirvana 发表于 2014-7-3 15:25
int向double转化是不会丢失精度的

恩,我明白了!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表