定义一个变量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 <stdioh>
#include <mathh>
void main()
{
int n=0, i, j,w,k;
for(i=2;i<=1000; i++)
{
w=1;
k=sqrt(i);
for (j=2; j<=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语言程序设计求素数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)