注册 登录
编程论坛 VC++/MFC

小程序之求素数为何频频出错???编译错误。

七夜之华 发布于 2014-09-14 17:07, 471 次点击
#include<stdio.h>
#include<math.h>
int prime(int x)    //判断函数是否是 素数(质数)
{                                      
    int i;
    for(i=2;i<(int)sqrt(x);i++)  
    if(x%i==0) return 0;
    return 1;
}
/*从左说起吧。
int n就是定义一个一个整型的变量n
=是赋值
(int)是强制类型转换,也就是把后面Math.sqrt(i)得到的结果转换成整型。而且是强制取整的方法,不会四舍五入。
Math.sqrt(i)就是调用Math函数库里的sqrt()方法,对i进行处理。具体就是对i开方, i=2时也就是根号2=1.414
整句读起来就是对i开方,结果取整后,赋给整型变量n.
当i=2时n就是1了。
*/
void main()
{
     int n,i,j=0;
     printf("n:");
     scanf("%d",&n);
     printf("小于等于%d的素数:\n",n);
     if(n>2)
     {
            printf("%4d",2);
            j++;
     }
     for(i=3;i<=n;i+=2)
         if(prime(i)==1
         {
             printf("%4d",i);
             if(j!=0 && ++ j%10==0)
            printf("\n");
     }
     printf("\n");
}
            
            
     /*cout<<"please enter n."n:"<<endl;
     cin>>n;
     for(i=2;i<=n;i++)
     {
        if(prime(i)==1)
        cout<<i<<endl;
      }
     system("pause");
     return 0;           //"\n" 是printf函数的输入参数," "表示引用字符串,\n是换行的意思,就像打字时的回车
}*/
 
      
      

2 回复
#2
yuccn2014-09-15 12:52
void main()
{
     int n,i,j=0;
     printf("n:");
     scanf("%d",&n);
     printf("小于等于%d的素数:\n",n);
     if(n>2)
     {
            printf("%4d",2);
            j++;
     }
     for(i=3;i<=n;i+=2)
         if(prime(i)==1 这里是否少了点什么?
         {
             printf("%4d",i);
             if(j!=0 && ++ j%10==0)
            printf("\n");
         这里是否也少了点什么?
     }
     printf("\n");
}
#3
七夜之华2014-09-15 19:40
不得不说,你真的挺细心呢。不过对于程序应该得到的结果还是没有得到,还请帮忙看看了呢。。。。
1