求C或者C++判断一个大数是不是素数,随机产生一个大素数的算法。

求C或者C++判断一个大数是不是素数,随机产生一个大素数的算法。,第1张

素数是仅能被1和本身整除的数。

我们可用一个循环使需要判断的数从2开始一直到它本身进行“除”验证即可判断。程序如下,

#include<stdioh>

int isp(int m) //定义一个判断素数的函数

{

int i;

for(i=2;i<m;i++) //将需要判断的数从2开始进行“除”运算

if(m%i==0)return 0; //m%i==0用于判断从2至m本身 有没有能够整除的数

return 1; //若有某一个数能被整除,说明此数不是素数“返回0”,若没有能被整除的,说明它是素数“返回1”

}

void main()

{

int i,j;

for(i=2,j=0;i<100;i++) //设定判断数值的范围,从2到99,因为1和100不用考虑,此处你也可以把范围自行设定,

if(isp(i)) //调用素数判断函数isp(),若返回值为“1”,证明是素数,执行下列运算,返回为“0”,则进行下一个for循环。

{

j++;

printf("\n第%d素数是:%d\n",j,i);

}

}

运行得知 1到100区间内 总共有25个素数。

#include "stdioh"

int isprime(int n)//判断n是否是素数,是,返回1,不是返回0

{

  int i;

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

     if(n%i==0)

       return 0;

  return 1;     

}

int main()

{

   int sum=0,count=0,i;

   for(i=1000;i>2;i--)

     if(isprime(i)==1)

     {

         //1000以内最大素数,那就从1000开始到2,去找20个素数就行

         sum+=i;

         count++;

         if(count==20)

           break;

     }

   printf("求1000以内最大的20个素数之和为:%d\n",sum);  

}

结果:

#include <stdioh>

#include <conioh>

#define ARR_LEN 255 /数组长度上限/

/ 试除法判断素数 /

/ 大于1的自然数num,若其不能被2~num^1/2(num的平方根)之间的任一自然数整除,则其为素数 /

/ num是素数返回1,否则返回0 /

int isPrime (int num) {

int i;

if (num <= 1) / 素数必须是大于1的自然数 /

return 0;

if (num%2==0 && num!=2) / 除2之外的偶数显然不是素数 /

return 0;

for (i=2; ii<=num; i++)

if (num%i == 0)

return 0;

return 1;

}

/ 遍历并以试除法确定n以内的素数 /

/ 将n以内的素数存入primeNums,并返回素数个数 /

int primeNumbers (int primeNums[], int n) {

int i, j;

for (i=2, j=0; i<=n; i++)

if (isPrime (i)) {

primeNums[j] = i;

j++;

}

return j;

}

/打印数组/

/ int arr[]: 打印目标数组; int len: 元素个数 /

void printArray (int arr[], int len) {

int i;

for (i=0; i<len; i++)

printf ("%d\t", arr[i]);

putchar ('\n');

}

int main (void) {

int n, primeNums[ARR_LEN], prinmeCnt;

int sum = 0;

int i;

printf ("输入n:");

scanf ("%d", &n);

prinmeCnt = primeNumbers (primeNums, n); / n以内的素数存入数组primeNums,并将素数个数赋值于prinmeCnt /

if (prinmeCnt>=10)

for (i=prinmeCnt-1; i>=prinmeCnt-10; i--)

 sum += primeNums[i];

else

for (i=0; i<prinmeCnt; i++)

sum += primeNums[i];

printf ("n以内的素数:\n");

printArray (primeNums, prinmeCnt);

printf ("最大的10个素数和:\n%d\n", sum);

getch (); / 屏幕暂留 /

return 0;

}

#include<stdioh>

intmain()

{

inta=0;

intnum=0;

inti;

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

scanf("%d",&num);

for(i=2;i<num;i++){

if(num%i==0){

a++;

}

}

if(a==0){

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

}else{

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

}

return0;

}

扩展资料:

质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。

基本算法:若k%m==0则说明k不是素数。

判断整数n是否为素数——采用枚举法求解。

采用枚举算法解题的基本思路:

(1)确定枚举对象、枚举范围和判定条件;

(2)枚举可能的解,验证是否是问题的解。

枚举算法的一般结构:while循环。

参考资料来源:百度百科-枚举法

以上就是关于求C或者C++判断一个大数是不是素数,随机产生一个大素数的算法。全部的内容,包括:求C或者C++判断一个大数是不是素数,随机产生一个大素数的算法。、求1000以内最大的20个素数之和。 C语言编程 怎么做、编写程序输出n以内最大的10个素数及其之和;如果n以内最大素数不足10个,则按照实际等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存