java穷举法找素数,巧解素数! 穷举法!(C语言代码)

解题思路:假如i是素数,则i不能整除2~i之间的所有数,定义一个变量j,取 2~i之间所有值。如果中间的数都不能除尽,

那么一起循环到最后一次j变成i时,i%j==i%i==0 这个时候i==j ,i就一定是素数。如果在j=0~i的循环中途

就出现i%j==0,说明i一定不是素数.

参考代码:#include 

int main()

{

int N,i,j;

scanf("%d",&N);

for(i=2; i<=N; i++)     //遍历2~N之间的所有数

{

for(j=2; j<=i; j++)  //j相当于0~i之间的所有数,i%如果除0~i之间的所有数都都不能除尽,那么i是素数。

{                    //i%j==0说明i能整除j  当i和j相等时,那么i%j必须为0

if(i%j==0&&i!=j) //如果j不是在最后一个i=j的情况下i%j==0,说明在j在取0~i的某个值时,i能将其整除,因此i肯定不是素数。

break;

if(i%j==0&&i==j) //说明i%(0~i之间)都不能除尽,只有最后i==j的情况下才能除尽,此时已经把所有数都判断完了,i是素数

printf("%d\n",i);

}

}

return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值