首页 > 编程知识 正文

C语言 素数判断,c语言素数的判定

时间:2023-05-03 23:38:59 阅读:217554 作者:2903

1、判断一个数是否为质数

思路:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。所以从2开始进行求余,在小于自然数本身数字里没有一个数字进行求余数为0的,则证明输入的自然数是质数,否则非质数

#include <stdio.h>int main(){ int a,b,i; b=0;//标记 while (1){ printf("请输入一个大于1的正整数:"); scanf("%d",&a); if(a>1) break; } for(i=2;i<a;i++){//质数是只能被自己整除,i<a的时候 if(a%i==0){//当出现i能被a整除,则说明不是质数 b++;//b自增 } } if(b==0){//判断b是否有变化 printf("%d是质数n",a); }else { printf("%d不是质数n",a); } return 0;}

结果

2、找出一个大于1的自然数中所有的质数并输出,计算总共多少个

思路:从该自然数开始进行判断是否为质数,如果是质数则打印,接着自然数在大于1时循环做自减,再依次判断是否为质数,如果是质数则打印,在通过一个变量的自增记录为质数的个数

#include <stdio.h>int main(){ int a,b,c,i; b=0; scanf("%d",&a); for(a;a>1;a--){ c=0; for(i=2;i<=a;i++){ if(a%i==0){ c++; if(a==i&&c==1){ printf("%d ",a); b++; } } } } printf("n总共质数为:%d",b); return 0;}

结果
S1区间1——72,有素数18个,孪生素数7对。(2和3不计算在内,最后的数是孪中的也算在前面区间。)

3、计算大于2的正整数有哪些素数组成,如45=3 *3 *5

思路:素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 因此就是把数字拆分成一个个质数数进行相乘,因此需从2开始进行求余数为0情况,如果余数为0,则自然数(a)更新为自然数(a)/2的值,进行进行下一轮求余数为0,余数不为0,在进行2的自增,继续求余为0,直到2变成一个大于自然数(a)的数值在停止求余为0的判断。

#include <stdio.h>int main(){ int a,b; printf("请输入大于2的正整数:"); while(1){ scanf("%d",&a);//a是键盘输入的数字 if(a>2) break; else printf("请输入大于2的正整数:"); } b=2;//b初始为2 printf("%d=",a);//打印a= while(b<=a){//b不能大于a,每次循环a的数据或者b的数据会进行更新 if(a%b==0){//当b能被a整除且b不等于0 printf("%d*",b);//打印 a=a/b;//a更新 a=a/b }else if(a%b==0&&a==b){//b能被a整除,且a=b printf("%d",b); a=a/b;//a更新后,a=1,循环结束 }else{ b++;//无法整除,b自增 } } return 0;}

结果

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。