C++反质数问题
发布网友
发布时间:2023-01-28 22:36
我来回答
共3个回答
热心网友
时间:2023-06-01 00:59
什么是质数?就是约数只有1和它本身的数,那什么又是约数,a如果能整除b,那么a就是b的约数。
这里,如何判断是否为质数呢?比如n,只要从2到n-1,一个个拿他去对n做取模运算(就是求余),如果余数为0,表示能整除,一旦能整除,就不是质数了。
进一步,可以证明,不需要一直验证到n-1,只要到sqrt(n),也就是n的平方根就可以了。比如16,只要验证到4,因为大于4的约数8在4之前肯定有一个2与之对应。
for(n=2;n<=100;n++) //这里是对2到100之间每个数都来验证一下是否质数
{
for(i=2;i<=sqrt(n);i++) //从2到n的平方根,依次让n对i求余
if(n%i==0) //%是求余运算符,如果为0,就表示能整除,比如4%2就是0,4%3就是1
break; //能整除,表示不是质数,不再继续验证
if(i>sqrt(n)) //验证成功了,表示是质数,输出这个数
cout<<n<<" ";
}
热心网友
时间:2023-06-01 01:00
int su(int a) 函数中 return i;改成return c;就可以了
热心网友
时间:2023-06-01 01:00
int su(int a) 函数中 return i;改成return c