注册 登录
编程论坛 C++教室

初学者问的小白问题,莫喷

whpiece 发布于 2016-02-17 15:54, 1971 次点击
#include<stdio.h>
int main()
{
    int num,i,n;
    printf("请输入数据:");
    scanf("%d",&num);
    for(i=2;i<num;i++)
    {
    if(num%i==0)
      {   
     n=0;
     break;
   
      }     
    n=1;   
    }
    if(n==1)
     printf("此数为素数。%d\n");
    else
     printf("此数不是素数。%d\n");    //在 \n前面加%d,输出字样就会2424484.
    return 0;
}


我初学,有能指教下的么?
5 回复
#2
hjx11202016-02-17 16:44
那些数字是垃圾值,得这样:
程序代码:
if(n==1)
  printf("此数为素数。%d\n",num);
else
  printf("此数不是素数。%d\n",num);  

 

#3
whpiece2016-02-17 16:54
回复 2楼 hjx1120
谢谢
#4
yangfrancis2016-02-18 09:28
回复 3楼 whpiece
要判断素数,我看到过一个可以进一步避免冗余运算的法。
把你的for(i=2;i<num;i++)条件改为for(i=2;i<sqrt(num);i++),少一大半运算量,结果是一样的。
也提议把n改成布尔型,直接赋给它true或false,用if(n)来做条件判断,虽然实质一样,但感觉代码可读性强一些
#5
whpiece2016-02-18 22:11
回复 4楼 yangfrancis
额…………你说的有点专业了,我刚开始学,虽然现在还看不懂,不过谢谢了 ,慢慢我就懂了
#6
yangfrancis2016-02-18 22:15
回复 5楼 whpiece
一点也不专业,那个sqrt()无非是取平方根,在<math.h>头文件里面。
1