关于求素数的C语言程序

关于求素数的C语言程序,第1张

呵呵

我看了下子

是求余的n%i这个返回一个余数,如果这个数是素数一定有余数是吧,余数肯定在0到9

下面if(i==n)printf("%5d",n);判断的,如果是素数,会返回一个余数,这个余数如果不是2,就++i,还不是,再循环,

如不是素数,就返回0了,能整除 ,for循环中判断为假,的时候跳出循环

程序及解释如下:

首先判断素数的算法:用一个数分别去除以2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。

则有如下程序

{ int m,k,i;

for(m=1;m<=100;m=m+2)      //m=m+2,因为偶数都不是素数,不用考虑,所以每次m+2

{ k=sqrt(m)                            //先求这个数的平方跟

for(i=2;i<=k;i++)                    //然后用i(从2到k,即m的平方跟)去除m,

if(m%i==0) break;                 //如果能被整除, 则不是素数,break

if(i>=k+1) pritnf("%d",m);    //如果i>k+1,则说明没有数能整除m则m是素数

}

}

扩展资料:

素数被利用在密码学上,所谓的公钥就是将想要传递的信息在编码时加入质数,编码之后传送给收信人,任何人收到此信息后,若没有此收信人所拥有的密钥,则解密的过程中(实为寻找素数的过程),将会因为找质数的过程(分解质因数)过久,使即使取得信息也会无意义。

在汽车变速箱齿轮的设计上,相邻的两个大小齿轮齿数设计成质数,以增加两齿轮内两个相同的齿相遇啮合次数的最小公倍数,可增强耐用度减少故障。

在害虫的生物生长周期与杀虫剂使用之间的关系上,杀虫剂的质数次数的使用也得到了证明。实验表明,质数次数地使用杀虫剂是最合理的:都是使用在害虫繁殖的高潮期,而且害虫很难产生抗药性。

以质数形式无规律变化的导d和鱼雷可以使敌人不易拦截。

多数生物的生命周期也是质数(单位为年),这样可以最大程度地减少碰见天敌的机会。

参考资料:

百度百科 素数

你的C语言求素数的程序我帮你改完了(仅两处错误),你看看吧(改动的地方见注释)

#include<stdioh>

#include<mathh>

int main()

{

 int n,i=1;

 int r;//这里float r;改成int r;因为整数除以整数所得余数还是整数

 printf("input a number n=");

 scanf("%d",&n);

 for(i=2;i<=n-1;)

 {

  r=n%i;

  if(r==0)

  {

   printf("%d不是素数\n",n);

   return 0;

  }

  else

  {

   i=i+1;

   if(i>sqrt(n))

   {

    printf("%d是素数\n",n);

    return 0;

   }

   //else//这里去掉else语句块,因为如果i>sqrt(n)n就是素数,如果i<sqrt(n)应该让程序自动执行下去

   //{

    //return(n);

   //}

  }

 }

}

工具/材料

ubuntu,vim,gcc

01

打开ubuntu并开启一个终端,输入命令vim is_primec,打开编辑页面,输入预处理指令#include<stdioh>用于在主函数中调用判断函数。然后定义一个函数int is_prime(int n),即判断整数n是否为素数。

02

首先,判断这个数是否小于2若是,则直接返回0,即表示它不是一个素数。

03

然后定义中间的因数i,初始值为2。依次使n对i取余数,看n能否整除i,然后令i自增直到i的平方大于n。在这过程中,如果遇到n能整除i,则说明n不是一个素数。如果循环能够直到i的平方大于n才结束,说明n是一个素数。

04

接下来,我们使用主函数进行测试,使用printf("%d : %d\n", n, is_prime(n))的格式进行输出。如果输出结果为0,说明不为素数;结果为1,说明是一个素数。

测试的数据依次是2,4,9,15, 17, 23, 25。

05

退出编辑器vim,然后使用gcc编译并运行它,得到结果。通过结果我们可以看出,预期的结果与我们对于素数的认知是相同的,说明我们的程序编写没有错误。以下是所有的源代码:

#include <stdioh>

//判断一个数是否为素数的函数定义

int is_prime(int n)

{

//判断n是否小于2若小于则直接返回0

//表示n不是一个素数

if(n < 2)

return 0;

//定义一个中间变量i,初始化i=2

int i = 2;

//依次判断每一个不大于根号n的i是否能被n整除

for(i = 2; i i <= n;i++)

{

//如果能够整除

if(n % i == 0)

//直接返回0,表示n不是一个素数

return 0;

}

//如果程序运行到这里,说明ii大于n

//说明n是一个素数

return 1;

}

int main()

{

printf("%d : %d\n", 2, is_prime(2));

printf("%d : %d\n", 4, is_prime(4));

printf("%d : %d\n", 9, is_prime(9));

printf("%d : %d\n", 15, is_prime(15));

printf("%d : %d\n", 17, is_prime(17));

printf("%d : %d\n", 23, is_prime(23));

printf("%d : %d\n", 25, is_prime(25));

return 0;

}

//我分别写出了求素数和判断素数的程序

/

//判断一个数是否为素数

#include<stdioh>

#include<mathh>

int isprime(int);

void main()

{

int inumber;

printf("请输入一个非负整数: ");

scanf("%d",&inumber);

if(isprime(inumber))

printf("%d是素数!\n",inumber);

else

printf("%d不是素数!\n",inumber);

}

int isprime(int a)

{

int i;

for(i=2;i<=sqrt(a);i++)

if(a%i==0)

return 0;

return 1;

}

/

//

//求某个正整数以内的素数

#include"stdioh"

#include"mathh"

int main(void)

{

int count,i,m,n,num;

printf("请输入所求范围(正整数): ");

scanf("%d",&num);

count=0;//count记录素数的个数

printf("%d以内的素数为:\n",num);

for(m=2;m<=num;m++)

{

n=sqrt(m);

for(i=2;i<=n;i++)

{

if(m%i==0)

break;

}

if(i>n)//如果m是素数

{

printf("%6d",m);

count++;

if(count%10==0)//count为10的倍数时换行

printf("\n");

}

}

printf("\n");

return 0;

}

12345678910111213141516171819

// 素数,也叫质数,就是指除了1和该数本身以外,不能被其他任何整数整除的正数 #include<stdioh>#include<mathh>void main(){    int m, k, i, n=0;    for(m=1; m <= 200; m=m+2)    {        k = sqrt(m);        for(i=2; i <= k; i++)        if(m % i == 0)    break;        if(i >= k + 1)        {            printf("%5d",m);            n = n + 1;        }    }}

请放心使用,有问题的话请追问

满意请及时采纳,谢谢,采纳后你将获得5财富值。

你的采纳将是我继续努力帮助他人的最强动力!

以上就是关于关于求素数的C语言程序全部的内容,包括:关于求素数的C语言程序、用C语言编1到100之间的素数程序、C语言求素数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9485255.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存