小程序之求素数为何频频出错???编译错误。
#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是换行的意思,就像打字时的回车
}*/