用C++编写程序求100以内的所有素数(质素)的和。

用C++编写程序求100以内的所有素数(质素)的和。,第1张

编写程序求100以内的所有素数的和的一种方法是:

定义一个变量sum来存储素数之和,初始值为0

用一个循环从2到100遍历所有的自然数,用另一个循环从2到该数本身判断是否有其他因数

如果没有其他因数,说明该数是素数,就把它加到sum中

如果有其他因数,说明该数不是素数,就跳过它

循环结束后,输出sum的值

以下是用Python编写的示例代码:

#code blocks syntax from markdown to encapsulate any part in responses that's longer-format content such as poems, code, lyrics, etc except tablessum = 0 #定义变量sum存储素数之和for i in range(2, 101): #遍历从2到100的自然数

   for j in range(2, i): #遍历从2到i-1的自然数

       if i % j == 0: #如果i能被j整除,说明i有其他因数

           break #跳出内层循环

   else: #如果内层循环完整执行,说明i没有其他因数

       sum += i #把i加到sum中print(sum) #输出sum的值

//输出1到100的所有素数

#include <iostream>

using namespace std;

class CStu

{

CStu()

{

}

};

int main()

{

int i, j, t;

t = 1;

for (i = 2; i < 101; i++) //遍历1-100间的所有数

{

for (j = 2; jj <= i; j++) //考查这些数是否有1和自身以外的因子

{

if (i % j == 0)

break;

}

if (i < jj) {//无上述因子则是素数

cout << i << " "; //输出这个素数

t++; //素数个数的计算

}

}

cout << "\n\nA total of " << t << " prime number above\n\n";

system("pause");

return 0;

}

//输出1到100的所有素数

之前的答案运行会中断,这是c++的标准程序,建议大家copy这个程序。。

支持点个赞

在程序的开头加入#include<mathh>

下面是fun函数:

int fun(int mm,int b[MAX])

{

int i,mmm,n=0;

for(mmm=2;mmm<=mm;mmm++)

{

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

if(mmm%i==0) break;

if(i>sqrt(mmm))

{

b[n]=mmm;

n+=1;

}

}

return n;

}

分析:

如果mm<=1,外循环不启动,直接返回n,此时n=0

如果mm=2,外循环启动,内循环i<=sqrt(mmm)的条件不满足,不启动,内循环下面的判断条件满足,于是让b[n]=mmm,n+=1,即找到一个符合条件的素数,此时b[n]既b[0]=2,然后n+=1,表示符合条件的素数的个数加1

同样,当mm=3的时候,内循环由于条件不满足,是不会执行的,但是在内循环下面的条件判断都满足,所以会把结果保存在n和b[n]里面,这时,外循环要执行2次

当mm>3时,内循环也会启动,但是要等内循环结束之后i的值满足条件的才是素数,程序的可靠信完全可以放心

刚刚又重新分析了一遍代码,稍微改了改,没问题了

源代码如下:

#include &lt;stdioh&gt;

#include &lt;mathh&gt;

void main()

{

int n=0, i, j,w,k;

for(i=2;i&lt;=1000; i++)

{

w=1;

k=sqrt(i);

for (j=2; j&lt;=k; j++)

if (i%j==0) {w=0;break;}

if (w) {

++n;

if (n%10==0) printf("%d\n",i);

else printf("%d\t",i);

}

扩展资料

1、素数使用for循环查找2-1000以内的所有素数,循环次数为999次,在for循环中添加一个移位寄存器用以存储所有的素数,其初始值为一个空数组。

2、在循环内部逐个数判断是否为素数,若是素数,则使用"数组插入vi"函数添加到移位寄存器的数组中,否则,移位寄存器中的值保留为上次的值。

改了一点点,大约10秒钟运行完1000 0000

1秒运行完100 0000

首先你要知道,打印语句是很慢的,这个10秒是删除掉打印语句后的速度

------------------------------------

#include<mathh>

#include<stdioh>

void main()

{

long i,n;

printf("%d ", 2);

for(n=3; n<=10000000; n+=2)

{

int temp=int(sqrt(n));

for(i=3; i<=temp; i+=2)//改成+2

if(n %i == 0)

break;

printf("%d ", n);//之前的判断去掉

}

printf("\n");

}

#include<stdioh>

void

main()

{

int

i,t,choose=0;

for(i=100;i<=1000;i++)

{

choose=0;

for(t=2;t<=(i-1);t++)

{

if(i%t==0){

choose=1;break;}

}

if(choose==0)

printf("%d\t",i);

}

getch();

}

也不给分

哈哈按照你的改的

试过绝对行

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++编写程序求100以内的所有素数(质素)的和。全部的内容,包括:用C++编写程序求100以内的所有素数(质素)的和。、编写一个C程序,计算出1到100之间所有素数的和、C语言程序设计求素数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存