题解 | #KiKi求质数个数#
KiKi求质数个数
https://www.nowcoder.com/practice/d3a404ee0f8d41f98bf4707035d91086
不会求素数看这里(零基础小白版)
定义:素数 只能被1或本身整除的数 !!!!!!!一定要背会
那么什么叫整除呢?
就是说两个整数 a/b=x..0只要它的余数为0就表示整除
比如 4就不是素数,为什么? 4/2=2..0 4可以被2整除,不符合素数的定义
再举个例子: 6 是不是素数? 当然不是了,因为6/2=3..0
那我们再看 5 是不是不是素数?5是素数,因为 5 除了1和5之外别的数都不能整除
解题思路:从定义入手 要验证一个数是不是素数,我们可以这样做,假设用户随机输入一个整数n
我们可以用一个循环,让它从2到n-1结束,为什么这样做呢,因为素数是只能被1或它本身整除的数
,那么只要验证除了这两个数之外的所有数都不能被整除,就是素数,否则只要有一个被整除了就不算素数。
int num; scanf("%d",&num);//用户随机输入一个整数 int i; for(i=2;i<n;i++)//2-n-1之间的数都列举出来 i<n 等价与 i<=n-1 eg: i<6 和i>=5 { if(num%i==0)// %取余运算符 5%2 = 5/2=2..1 结果=1 余数为0表示整除 f=0;// 不是素数了 f=0 不明白的看素数的定义 除了1和它本身别的都不能被整除 家人!!!!!!! } if (f==1) printf("%d是素数\n",num); else printf("%d不是素数\n",num);
学会这个案例,你就已经会判断一个数是不是素数了,那么如果要判断一个区间内的素数呢?是不是又迷茫了,不着急,往下看解决你所有的迷茫!!!!!
#include <stdio.h> int sushu(int num) { int fhz = 1; int i; for(i = 2;i<=num-1;i++) { if(num%i==0) fhz= 0;//不是素数返回0 } return fhz;//是素数返回1 } int main() { int i,j; int ssgs=0; for(i=100;i<1000;i++)//列举出所有三位数 { if(sushu(i)==1) { ssgs++; } } printf("%d\n",ssgs); return 0; }#小白##c语言零基础##素数#