700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > c语言关于sqrt判断素数原理的理解

c语言关于sqrt判断素数原理的理解

时间:2024-05-06 04:51:33

相关推荐

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("是素数");elseprintf("不是素数");

很显然程序第一步就会判定不是素数

因为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("不是素数");}return 0;}

这里有很多新手不理解为什么i<n-1

回到素数的定义

也就是说n取余2到n-1中的所有数都不能为0.

如有错误,还请各位多加指正!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。