素数专题:
[分析]:只能被1和本身整除的数为素数。判别时采用除开1和本身以为能否被其他数整除,如果能整除就不是素数,否则为素数。
练习:
1、 从键盘输入一个数,判别x是否是素数。
#include <stdio.h>
void main ()
{ int i,x,f=1;
scanf("%d",&x);
for(i=2;i<x;i++)
if(x%i==0) f=0;
if(f==1) printf("%d是素数。",x);
else printf("%不是素数。",x);
}
2、 出100以内的素数。
#include <stdio.h>
void main ()
{ int i,x,f;
for(x=2;x<=100;x++)
{f=1;
for(i=2;i<x;i++)
if(x%i==0) f=0;
if(f==1) printf("%5d",x);
}
}
3、 出一个大于给定整数且紧随这个整数的素数。
#include <stdio.h>
void main()
{
int i,k,n;
scanf("%d",&n);
for(i=n+1;;i++){
for(k=2;k<i;k++)
if(i%k==0)
break;
if(k==i)
{printf("%d",i);break;}
}
}
4、 出一个小于给定整数且紧随这个整数的素数。
#include <stdio.h>
void main()
{
int i,k,n;
scanf("%d",&n);
for(i=n-1;;i--){
for(k=2;k<i;k++)
if(i%k==0)
break;
if(k==i)
{printf("%d",i);break;}
}
}
5、 随机产生100个[10,999]之间的数,将求得的素数排序(从小到大)。
#include <stdio.h>
#include <stdlib.h>
void main ()
{ int i,j,x,m=-1,a[100],b[100];
system("cls");
for(i=0;i<100;i++)
{a[i]=rand()%990+10;
printf("%5d",a[i]);}
for (i=0;i<100;i++)
{for(j=2;j<a[i];j++)
if(a[i]%j==0) break;
if(j>=a[i]) {m=m+1;b[m]=a[i];}}
printf("\n");
for(i=0;i<=m;i++)
printf("%5d",b[i]);
printf("\n");
for(i=0;i<m;i++)
for(j=i+1;j<=m;j++)
if(b[i]>b[j]) {x=b[i];b[i]=b[j];b[j]=x;}
for(i=0;i<=m;i++)
printf("%5d",b[i]);
}
6、 功能:判断m是否为素数,若是返回1,否则返回0。
#include <stdio.h>
void main()
{ int fun( int m);
int m,k=0;
for(m=1;m<100;m++)
if(fun(m)==1)
{
printf("%4d",m);k++;
if(k%5==0) printf("\n"); /*每行输出5个数*/
}
}
int fun( int m)
{
int i,k=1;
if(m<=1) k=0;
for(i=2;i<m;i++)
if(m%i==0) k=0;
return k;
}
需要归纳记忆的内容:
方法一:
#include <stdio.h>
void main ()
{ int i,x,f=1;
scanf("%d",&x);
for(i= 2;i< x;i++) /*除开1和本身的范围应该是怎么样的?*/
if(x%i==0) f=0;
c++判断素数if(f==1) printf("%d是素数。",x);
else printf("%不是素数。",x);
}
方法二:
#include <stdio.h>
void main ()
{ int i,x;
scanf("%d",&x);
for(i=2; i<x;i++) /*注意观察两个条件的设置*/
if(x%i==0) break;
if( i>=x) printf("%d是素数。",x);
else printf("%不是素数。",x);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论