当前位置:首页 » 编程语言 » 利用c语言的双循环求素数之和
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

利用c语言的双循环求素数之和

发布时间: 2022-05-26 05:53:40

A. c语言程序:使用while循环语句写一程序完成求100以内的所有素数之和。求各位大佬解答!感激不尽

#include<stdio.h>
intmain()
{inti=2,j,s=0;
while(i<100)
{j=2;
while(j*j<=i)
{if(i%j==0)break;
j++;
}
if(j*j>i)s+=i;
i++;
}
printf("100以内素数的和=%d ",s);
return0;
}

B. 用c语言 求素数之和(即求出素数并相加)

//函数isPrime判断参数num是否是素数
int isPrime(int num) {
int i;
for(i=2;i<=i/2;k++)
{
if(num%i==0) {
return 0;//num不是素数
}
}
return 1; //num是素数
}
//main函数,进行测试
void main(){
int i;
int primeSum=0;
for(i=2;i<=100;i++) { //此处修改求多大数范围之内的素数之和
if(1==isPrime(i)) {
primeSum+=i;
}
}
printf("\n100以内的所有素数之和为:%d\n",primeSum);
}

C. 用C语言输入两个正整数,求出这两个数之间的所有素数的和,应该怎么做

具体思路:利用循环判断素数,将结果传递给控制变量,由控制变量来判断是否执行自增以及求和。

注意:1既不是素数也不是合数。

D. 用双循环求0-1000所有素数之和 并显示出 其个数和总和 哪里错了

改成这样试试:
#include "stdio.h"
#include "math.h"
void main()
{
int i,x,t,sum,s;
sum=0;
s=0;
printf("素数是:\n");
for(x=1;x<=1000;x++)
{
t=1; //t=1要放到循环里面,因为在外面的话,一旦不是素数,那么t就会一直为0,不会再判断是否为素数了。
for(i=2;i<x;i++)
{
if(x%i==0)
{
t=0;
break;
}
}
if(t==1)
{
s=s++;

printf("%4d ",x);
if(s%5==0)
{
printf("\n");
}
}
}
printf("\n");
printf("The total is %d\n",s);
}

E. C语言求素数和

main()
{
int i,m,j; //增加一个变量,见后面说明
for(i=2;i<=100;i++)
{m=sqrt(i);
//for(i=2;i<=m;i++) 这里i值被重新赋值,你原来的i值找不到了!如果是素数,怎么输出呢?
for(j=2;j<=m;j++) //换一个变量,不要影响要检查的数据i
if(j%m!=0) //改成j
; //这样写,会让你更清楚,这句如果j不能整除m,就啥也不干,象你所说回到下一个循环检查。
else
break; //加上这两句,如果能整除则说明:i不是素数!!就不要再去检查了。
if ( j > m ) //加上这句,如果检查所有的j全部不能整除m,循环结束后,j一定大于m,这时的i才是素数
printf("%d",i);
}

getch();
}

F. (c语言)求素数和

你s=s+x;
放的位置不对,应该这样放:
#include
void
main()
{
int
x,n=10,i,s=0;
for(x=3;x<=n;x++)
{
for(i=2;i
=x)
{
printf("%d+",x);
s=s+x;
}
}
printf("\b=%d\n",s);
}
补充:
在用外层的for计算下一个的时候,要把内层for判断出来的素数累加起来啊
否则,计算到下一个的时候,前一个就丢了啊
所以,累加的那句代码,应该在外层for循环的里面,内存for循环的外面(后面)啊

G. ,C语言求素数之和,新手 ,求教

网上的代码意思是:n就是你输入的任意数,判断它是否是素数的方法是用大于2小于n的数去除n,若能整除即不是素数,跳出循环;若数一直增加到n+1都没有被整除,即可输出“素数”。
你的源程序:3是素数,很简单,所以用if来提醒输入大于3的数,你的只是另一种素数算法,是优化的算法,更快。因为只需用2到根号a去判断。

H. 100以内的素数之和用C语言怎么编写程序

这个问题可以分成两部分解决,一个是判断素数,另一部分是实现累加和输出。

一、判断素数。

有以下两种常见的判断素数的方法。

1 通过数学定义判断,即查找所有因子,如果存在除1及本身以外因子,则非素数。

代码如下:

#include<math.h>//用到开平方函数,引用对应的数学头文件
intis_prime(intn)
{
inti;

for(i=2;i<=(int)sqrt(n);i++)//根据数学定义,除本身外,其它因子不可能比平方根更大,所以只需要判断不大于平方根的值即可。其中sqrt为求平方根函数。
if(n%i==0)return0;//只要有一个符合条件的因子,则非素数,返回0。

return1;//该数为素数。
}

这个算法可以应用于任何情况。


2 素数筛。

这种算法的原理是,所有素数的倍数都不是素数。

先假定所有数均为素数,然后去掉已知素数的倍数,最终得到一定范围内所有素数。

代码如下:

intmap[100];//数据规模,这里使用题目中的100,实际上应该是标记0-100,也就是101个单位,但是100是已知的非素数,所以用100个元素就足够了。
voidmake_map(void)
{
inti,j;

map[1]=1;//1不是素数。
for(i=2;i<100;i++)
{
if(map[i])continue;//对于已知的非素数,不做处理
for(j=i*2;j<100;j+=i)
map[j]=1;
}
}

intis_prime(intn)
{
if(map[1]==0)make_map();//如果1没有被标记为非素数,那么表示map没有生成,需要生成map。
returnmap[n]==0;//如map[n]为0,则n为素数
}

这种算法空间开销与数据规模成正比,当数据规模比较大时并不适用。

但对于数据规模小且素数判断频繁的情况,具有更高的时间开销优势。


二、累加。

这部分可以放置于主函数。调用上述任意一种素数判断函数皆可。

#include<stdio.h>
intmain()
{
intsum=0;//累加结果
inti;

for(i=2;i<100;i++)
if(is_prime(i))sum+=i;//累加素数。

printf("sum=%d ",sum);//输出结果。
}

最终输出sum=1060

I. 用c语言找素数并求和

x=0,y=0

CNT=x;
SUM=y;
这两句之后,都等于0了。删掉这两行

J. C语言 求10-20以内素数之和

{
int m,i;
for(m=2;m<=10;m++)
{
for(i=2;i<m;i++)
if(m%i!=0) /*为什么要用!=呢,这样只要遇到不能被整除的数就会结束循环,这样有些数字就会判断错误*/
break; //跳出内层循环
printf("%3d",m); /*这个输出在外层循环中,只要内层循环结束,就会执行,所以就算break起作用了,也只是跳出内层循环,还是会执行这一句,所以会顺序输出m的值*/
}
}

改:
{
int m,i;
for(m=2;m<=10;m++)
{
for(i=2;i<=m;i++) //改成i<=m,因为素数只能被1和他本身整除
if(m%i==0)//判断是否有数能将m整除
break; //有则跳出内层循环
if(i==m)/*如果m能被其他数整除,则跳出循环后i值一定比m小,如果只被m本身整除,则跳出循环后i==m,证明m为素数*/
printf("%3d",m); //满足条件才输出
}
}