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

作者&投稿:上亭 (若有异议请与网页底部的电邮联系)
用C语言编1到100之间的素数程序~

程序及解释如下:
首先判断素数的算法:用一个数分别去除以2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
则有如下程序
{ int m,k,i;
for(m=1;m<=100;m=m+2) //m=m+2,因为偶数都不是素数,不用考虑,所以每次m+2.
{ k=sqrt(m) //先求这个数的平方跟
for(i=2;i<=k;i++) //然后用i(从2到k,即m的平方跟)去除m,
if(m%i==0) break; //如果能被整除, 则不是素数,break
if(i>=k+1) pritnf("%d",m); //如果i>k+1,则说明没有数能整除m.则m是素数
}}

扩展资料:
素数被利用在密码学上,所谓的公钥就是将想要传递的信息在编码时加入质数,编码之后传送给收信人,任何人收到此信息后,若没有此收信人所拥有的密钥,则解密的过程中(实为寻找素数的过程),将会因为找质数的过程(分解质因数)过久,使即使取得信息也会无意义。
在汽车变速箱齿轮的设计上,相邻的两个大小齿轮齿数设计成质数,以增加两齿轮内两个相同的齿相遇啮合次数的最小公倍数,可增强耐用度减少故障。
在害虫的生物生长周期与杀虫剂使用之间的关系上,杀虫剂的质数次数的使用也得到了证明。实验表明,质数次数地使用杀虫剂是最合理的:都是使用在害虫繁殖的高潮期,而且害虫很难产生抗药性。
以质数形式无规律变化的导弹和鱼雷可以使敌人不易拦截。
多数生物的生命周期也是质数(单位为年),这样可以最大程度地减少碰见天敌的机会。
参考资料:百度百科 素数

C语言经典例子之求100之内的素数

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

一、判断素数。

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

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

代码如下:

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

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

return 1; //该数为素数。
}

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


2 素数筛。

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

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

代码如下:

int map[100];//数据规模,这里使用题目中的100,实际上应该是标记0-100,也就是101个单位,但是100是已知的非素数,所以用100个元素就足够了。
void make_map(void)
{
int i,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;
}
}

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

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

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


二、累加。

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

#include <stdio.h>
int main()
{
int sum = 0;//累加结果
int i;

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

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

最终输出sum=1060



这个问题可以分成两部分解决,一个是判断素数,另一部分是实现累加和输出。
一、判断素数。
有以下两种常见的判断素数的方法。
1
通过数学定义判断,即查找所有因子,如果存在除1及本身以外因子,则非素数。
代码如下:
#include <math.h>//用到开平方函数,引用对应的数学头文件
int is_prime(int n)
{
int i;
for(i = 2; i <= (int)sqrt(n); i ++)//根据数学定义,除本身外,其它因子不可能比平方根更大,所以只需要判断不大于平方根的值即可。其中sqrt为求平方根函数。
if(n%i==0) return 0; //只要有一个符合条件的因子,则非素数,返回0。
return 1; //该数为素数。
}这个算法可以应用于任何情况。
2
素数筛。
这种算法的原理是,所有素数的倍数都不是素数。
先假定所有数均为素数,然后去掉已知素数的倍数,最终得到一定范围内所有素数。
代码如下:
int map[100];//数据规模,这里使用题目中的100,实际上应该是标记0-100,也就是101个单位,但是100是已知的非素数,所以用100个元素就足够了。
void make_map(void)
{
int i,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;
}
}
int is_prime(int n)
{
if(map[1] == 0) make_map(); //如果1没有被标记为非素数,那么表示map没有生成,需要生成map。
return map[n] == 0; //如map[n]为0,则n为素数
}这种算法空间开销与数据规模成正比,当数据规模比较大时并不适用。
但对于数据规模小且素数判断频繁的情况,具有更高的时间开销优势。
二、累加。
这部分可以放置于主函数。调用上述任意一种素数判断函数皆可。
#include <stdio.h>
int main()
{
int sum = 0;//累加结果
int i;
for(i = 2; i < 100; i ++)
if(is_prime(i))sum+=i;//累加素数。
printf("sum = %d\n", sum);//输出结果。
}最终输出sum=1060

#include <stdio.h>
#include <math.h>

int isPrimer(int n)
{
int i;
if(n == 1)
return 0;
if(n == 2)
return 1;
if(n%2 == 0)
return 0;
else
{
int count =(int)sqrt(n)+1;
for(i=3;i<count;i+=2)
if(n%i == 0)
return 0;
}
return 1;

}
int main(void)
{
int n;
int i;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
if(isPrimer(i))
{
printf("%d,",i);
}
}
return 0;
}
--------------------------------------------------------------------------------
我试过了没问题的
main()
{
int i,k,c;
c=1;
for (i=2;i<=100;i++) /*设定范围100以内*/
{
for(k=2;k<=i;k++) /*从1查到当前所判断的数*/
{
if (i%k==0 && k!=1 && i!=k) c=0; /*如果已经不满足素数条件,则将标志转0*/
}
if (c!=0)
printf("%d,",i);
c=1; /*初始化标志*/
}
}

具体程序我现在写不了,给你个思路吧,用个循环判断从1到A/2中数A能整除的,如果超过1个,就不是素数。(A可以任意选取范围,不限于1到100)

voide main()
{int i,j,s=0;<br/> for(i=2;i<=100;i++)<br/> { for(j=2;j<=i/2;j++) <br/> if(i%j==0)break; <br/> if(j>i/2) s=s+i; <br/> }
printf("s=%d/n",s);}


2到10000的素数之和是多少
是20,是因为用短除的方法分解出来的。如:5L1O00O,5L20OO,5L40O,5L80,商是|6,再分解就是偶数,不能用素数分解了,所以到此为止,100OO以内的素数和,只有:5十5十5十5=2O。答:1O000以内素数和是:5十5+5十5二20。

内数的以因1质数合00解分
2*222==以和 =2*5*157==33271*44*0有*2板*完**2=7=1*38350*3323 =24 =66215 207*9*3*2**22333=3*37831*39=*1:9443=71*29 2276*1235

用java编写一个输出1到00以内的素数并求和的程序
Arrays.fill(primes, 2, num+1, true);\/\/从2开始,假设都为素数 int n = (int) Math.sqrt(num);for(int i = 1; i< n; i++){ if(primes[i]){\/\/如果i是质数,那么i的倍数不是质数 for(int j = 2*i; j<=num; j+=i){ primes[j] = false;} } } return primes;} --...

2到400之间所有的素数之和 .结果 求三位数的奇数中,所有个位数字之和是...
2到400之间所有的素数之和为 13887; 2到5 00素数 之和为21536。三位数的奇数中,所有各位数字之和是15的倍数的数的和为 19731

两个素数的和为99,这两个素数的积是多少
两个素数的和为99,这两个素数的积是194。解释分析:1、首先因为两个数的和是99,而99这个数是奇数,所以得;2、这两个数必定是一奇一偶,而偶质数只有2,所以得:3、这两个质数是2和97,所以得:公式:2×97=194 答案就是:这两个质数的积是194。注意事项:性质 质数的个数是无穷的。

最大的三位数质数是什么
4、质数的个数公式是不减函数。5、若n为正整数,在n的平方到(n+1)的平方之间至少有一个质数。6、若n为大于或等于2的正整数,在n到n!之间至少有一个质数。7、若质数p为不超过n(n≥4 )的最大质数,则00以内的素数\\frac{n}{2}"> 。8、所有大于10的质数中,个位数只有1、3、7、9。

任意一个大于2的整数都可以写出三个质数(素数)之和。请...
可分成三个质数之和的数最小是1010=2+3+5,这是指三个不同质数的和。 追问 恩 3不行吗 以前1也是质数 1+1+1 但要怎么证明好点 现代好像是大于5的整数为3个质数之和因为忽略1 2+2+2 回答 2、3、5是3个不同的质数,如能是相同的质数,那最小是6 评论 | xmrs_tqcl |来自手机知道...

在线等答案~~从10到2000之间所有素数之和是多少?
10到2000之间所有素数之和 277033 三位数中各位数字相加等于五的倍数的数的个数 180

输入一个数,把它分解成两个素数之和用c++
对于正数数,优先将它分解成两个正质数之和 哥德巴赫猜想:每个不小于6的偶数都可以表示为两个奇素数之和 \/ if(N >= 0){ for(i=0;i<=N;i++){ if(isPrime(i) && isPrime(N-i)){ cout << N << " = " << i << " + " << (N-i)<<endl;break;} } if(i <= N){ cont...

哥德巴赫猜想说的是什么?有谁能简单叙述一下,谢谢、
帮助的人:130万 我也去答题访问个人页 关注 展开全部 哥德巴赫猜想(Goldbach Conjecture)大致可以分为两个猜想(前者称"强"或"二重哥德巴赫猜想,后者称"弱"或"三重哥德巴赫猜想):1.每个不小于6的偶数都可以表示为两个奇素数之和;2.每个不小于9的奇数都可以表示为三个奇素数之和。 本回答被网友采纳...

绥江县17183653333: c语言求100以内素数的和 -
呼怜金鸡: 1解: #include <stdio.h> #include <math.h> int pr(int n) { int i; for (i=2; i<=(int)sqrt(n); i++) if (n%i==0) return 0;return 1; } int main(void) { int i; long int sum=0; for (i=2; i<=100; i++) sum+=pr(i)?i:0; printf("%ld\n",sum); return 0; }2解: #include<...

绥江县17183653333: 编写一个C语言程序求100以内所有素数的和 -
呼怜金鸡: #include int prime(int n)//求素回1,不是返回0 { for(int i=2;i 追问: 用C程序语言怎么判断一个数是不是素数的 追答: int prime(int n)//求素数过程,是返回1,不是返回0 { for(int i=2;i 评论 0 0 0 加载更多

绥江县17183653333: 输出1 - 100之间的素数还有他们的和,用C语言实现 -
呼怜金鸡:#include int isprime(int n) {int i;if(n<2)return 0;for(i=2;i*i<=n;++i)if(n%i==0)return 0;return 1; } int main() {int i,sum;for(i=1,sum=0;i<101;++i){if(isprime(i)){printf("%d\n",i);sum+=i;}}printf("%d\n",sum);return 0; }

绥江县17183653333: C语言中:求100到200之间全部素数之和? -
呼怜金鸡: #include<stdio.h> #include<math.h> void main() {int i,j,isPrime,PrimeSum = 0;float p;/*从101开始循环,只需要检测奇数,所以每次加2*/for (i=101;i<200;i+=2){p = sqrt(i);/*标识变量,1表示是素数*/isPrime = 1;/*只需要循环到n的平方...

绥江县17183653333: c语言100以内素数的和 -
呼怜金鸡: #includemain() { int i,j,f,s=0; for(i=2;i<=100;i++) { f=1; for(j=2;j<=i/2;j++) { if(i%j==0) { f=0; break; } } if(f) s+=i; } printf("%d",s); }

绥江县17183653333: C语言版的求100以内素数的和 -
呼怜金鸡: #includevoid main() { int i,j,k=0,a[100], f; for(i=0;i

绥江县17183653333: 100以内的素数之和用C语言怎么编写程序? -
呼怜金鸡: 具体程序我现在写不了,给你个思路吧,用个循环判断从1到A/2中数A能整除的,如果超过1个,就不是素数.(A可以任意选取范围,不限于1到100)

绥江县17183653333: 用c语言求一百以内的质数和 -
呼怜金鸡: #include int isprime(int n) { int i, s; for(i = 2, s = sqrt(n); iif(n % i == 0) return 0; return 1; } void main( ) { int i, sum; for(i = 2, sum = 0; iif(isprime(i)) sum += i; printf("100以内的所有的质数的和为%d\n", sum); }

绥江县17183653333: C语言:求100以内所有素数的和 -
呼怜金鸡: #include <stdlib.h> bool Testsu(int x); int main(void) { int x = 0,y=0; printf("Please input a number.....\n"); scanf_s("%d", &x); for (int i = 1; i <= x; i++) if (Testsu(i)) { y += i; printf("%d ",i); } printf("\nnumber form 1 to %d ,the sum of su is %d\n",...

绥江县17183653333: 谁能给我用C 语言编写的求100以内的素数之和?万分感谢!!! -
呼怜金鸡: #include int isPrime(int x) { int i; for(i=2;i { if(x%i==0) return 0;} return 1; } int main() { int i; int sum=0; for(i=2;i if(isPrime(i)==1) sum+=i; printf("sum=%d\n",sum); return 0; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网