资源描述
C语言-判断质数 记得写注释 教材p217
质数也叫素数,100以内的质数有25个。分别是:2、3、 5、7、11、13、17、19、23、29、31、37、41、43、47、 53、59、61、67、71、73、79、83、89、97e
质数概念1:除了1和它本身以外再也没有一个能被它整 除的整数。
质数概念2 :质数是指在大于1的自然数中,除了1和它 本身以外不再有其他因数的自然数。
(什么是因数? 4=1*4或2*2那么1、2、4就是4的因 数)
(什么是合数:除了1和它本身还有其它正因数。)
技术点:for语句、if语句、break语句
注意:循环判断条件范围(k)可有三种写法,执行效率依次 2日.占.
(l)2~n-l(2 ) 2 〜n/2
(3 ) 2〜sqrt(n) n开平方
sqrt()说明在math.h头文件中L 输入一个数,判断是不是质数(素数X
#include <stdio.h>#include <math.h>//sqrt()函数在这里面声明 int mainC) {
int n,a=0,i,k;//a用来记录是不是质数
scQnf("%d“,&n);
k=sqrt(n);
for(i=2; i<=k; i++)〃判断是不是质数 (
if(n%i==0)〃如果能够被i整除,说明不是质数 (a=l;〃设置a为1,代表现在这个数不是质数
break;//不是质数了,不需要继续循环判断,跳出循环 )
)
if (a==l)printf (”%d 不是质数 “,n);
else printf(“%d是质数”,n);
return 0;)
方法二:
#include <stdio.h>^include <math.h>〃sqrt()函数在这里面声明
int main。{
int n,i,k;
scanf("%dM,&n);
k=sqrt(n);
for(i=2;i<=k;i++) 〃判断是不是质数
{if(n%i==0)〃如果能够被i整除,说明不是质数
{break;//不是质数了,不需要继续健环判断,跳出循环
)
}
if(i>k)printf(”%d是质数”,n);〃如果是质数会执行完for语句,最后i为k+1
else printf(”%d不是质数”,n);
return 0;)
2、 输出100以内的质数(素数)#include <stdio.h>
^include <math.h>//sqrt()函数在这里面声明int main。{
int n,i,k;
for(n=2;n<=100;n++){〃判断质数开始
k=sqrt(n);for(i=2 ;i<=k; i++)〃判断是不是质数
{if(n%i==0)〃如果能够被i整除,说明不是质数
{break;//不是质数了,不需要继续循环判断,跳出循环
}}
if(i>k)printfC'%d如果是质数会执行完for语句,最后i为k+1〃判断质数结束
)
return 0;)
3、【拓展】输出100以内的质数(素数),每5个换行#include <stdio.h>
*include <math.h>//sqrt()函数在这里面声明 int main() {
int n,i,k,count=0;
for(n=2;n<=100;n++){〃判断质数开始
k=sqrt(n);forCi=2; i v=k; i++)〃判断是不是质数 if(n%i==0)break;
{printfCf%2d H,n);
count++;i f (count%5=0)p ri nt f ( H\n n );
)
)
return 0;}
4、【拓展】任意输入两个正整数,输出这两个整数之间的所有质数(素数)
#mcLude <stdio.h>
#include <math.h>//sqrt()函数在这里面声明 int main() {
int j,k,count=0;
scanf(M%d%dn,&n,&m);
for(i=n;i<=m;i++){〃判断质数开始
k=sqrt(i);for(j=2; j<=k; j++)〃判断是不是质数 if(i%j==0)break;
if(j>k&&i!=l) (printfC^Zd n,i);
count++;i f(count%5==0)printfC*\n");
)
)
return 0;)
5、【拓展】通过自定义函数isprime(),实现质数(素数)的判断传入一个整数n ,判断是否为质数(素数),假设是返回1 ,否 那么返回0。
#include <stdio.h>^include <math ,h>//sqrt()函数在math・h中声明 int main。{
int n;
int isprime(z/7t n);
scanf(H%dH,&n);
if (isprime(n))printf ("%d 是质数",n);
else printf(“%d不是质数”,n);
return 0;)
int isprime(znt n){
int k,i;
k=sqrt(n);
for(i=2 ;i<=k; i++)〃判断是不是质数
if(n%i==0)break;
ifCi>k&&n!=l) return 1;〃质数返回1
else return 0;//不是质数返回0}
展开阅读全文