c语⾔关于sqrt判断素数原理的理解素数定义:只能分解成1和本⾝两个因数
int n,i;
double s;
scanf("%d",&n);
(注意此处的s不能取int类型,否则单步调试它s的值会与n是偶数时相等容易引起混淆)
假设输⼊⼀个数36
s = sqrt(36) //s = 6;
for( i=2;i<=s;i++)
{
if( n%i==0)
{
break;
}
}
if( i>s )
printf("是素数");
else
printf("不是素数");
很显然程序第⼀步就会判定不是素数
因为36%2的值已经是0
我们暂时不看break语句
36%i也就是会i最多取到6这个数字
当i = 6时36%6 == 0;
i≯s
printf不是素数
我们再将36换成37试试看
s = sqrt(37) //计算器得出s≈6.083
可见s是⼤于6的
这时i可以从2开始取到7
37%1到6都不为0
此时i为6还要++变为7
i > s
则可以printf此数是素数
下列为程序⽰例:
#include<stdio.h>
#include<math.h>
int main()
{
int n,i;
double s;
scanf("%d",&n);
s =sqrt(n);
for( i=2;i<=s;i++)
{
if( n%i==0)
{
break;
}
}
if( i>s )
{
printf("是素数");
}
else
{
printf("不是素数");
}
return0;
}
这⾥有很多新⼿不理解为什么i<n-1
c++判断素数回到素数的定义
也就是说n取余2到n-1中的所有数都不能为0.如有错误,还请各位多加指正!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。