1. 判断一个数是否为素数
素数概念:素数也称为质数,是一个大于1的自然数,且除了1和它本身外,不能被其他自然数整除。
如:2、3、5、7、11、13、17等
代码实现如下:
#include<stdio.h>
void main()
{
int n,i,flag=1;//默认flag=1是素数
scanf("%d",&n);
for(i=2;i<n;i++)//遍历除了1和它本身外所有自然数
if(n%i==0)//如果2-n之间有一个数能整除n,n就不是素数
flag=0;
if(flag==1)
printf("%d是素数\n",n);
else
printf("%d不是素数\n",n);
}
2. 求100以内的所有素数
代码实现如下:
#include<stdio.h>
void main()
{
int i,j;
for(i=2;i<100;i++)//遍历100以内的自然数
{
for(j=2;j<i;j++)//遍历除了1和它本身外所有自然数
if(i%j==0)//如果2-i之间有一个数能整除i,i就不是素数
break;
if(j>=i)//如果j>=i说明2-i之间的数全部整除了一遍i,如果j<i说明还有数没有整除完
printf("%d ",i);
}
printf("\n");
}
3. 输入一个整数n,求出小于或等于n的所有素数
题目:编写函数int fun(int n,int a[N]),该函数的功能是求出小于或等于n的所有素数,并放在a数组中,该函数返回所求出的素数的个数。
如n为15时有2、3、5、7、11、13共6个。
代码实现如下:
#include <stdio.h>
#define N 100
int fun(int n,int a[N]);
void main()
{
int n,a[N],count,i;
scanf("%d",&n);
count=fun(n,a);
printf("%d以内的素数一共有%d个\n",n,count);
printf("%d以内的素数如下:\n",n);
for(i=0;i<count;i++)
printf("%d ",a[i]);
printf("\n");
}
int fun(int n, int a[N])
{
int i,j,k=0;//k为素数个数,初始值为0
for(i=2;i<=n;i++) //求出小于或等于n的全部素数
{
for(j=2;j<i;j++)
if(i%j==0)
break;
if(j>=i)//避免重复赋值,如果没有这个条件,则i=5时,j=2,3,4,5都有a[k++]=i;
a[k++]=i; //将求出的素数放入数组a中
}
return k; //返回所求出的素数的个数
}
4. 求绝对素数
编写一个程序,找出100以内所有绝对素数。
绝对素数是指本身是素数,其逆序数也是素数的数,如13,17,10321等
逆序数至少要有两位,所以绝对素数是两位数以上的数
代码实现如下:
#include<stdio.h>
int isPrimeNumber(int n);//声明函数
void main()
{
int i,t,flag_i,flag_t;
for(i=10;i<100;i++)//遍历100以内可能出现的绝对素数
{
t=i%10*10+i/10;//逆序数
flag_i=isPrimeNumber(i);//判断正序数是否为素数
flag_t=isPrimeNumber(t);//判断逆序数是否为素数
if(flag_i==1 && flag_t==1)//如果正序、逆序都是素数,那就是绝对素数
printf("%d ",i);
}
printf("\n");
}
int isPrimeNumber(int n)//定义函数,判断一个数是否为素数
{
int i,flag=1;//flag=1是素数
for(i=2;i<n;i++)
if(n%i==0)
flag=0;//flag=0不是素数
return flag;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84889.html