求用C语言写的1-100素数的程序

作者&投稿:本昭 (若有异议请与网页底部的电邮联系)
用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是素数
}}

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

Action()
{
int i,j;
int sum=0;
int flag;//是否为素数
for(i=2;i<=100;i++){
flag=1;
for(j=2;j<=i-1;j++){
if(i%j==0){
flag=0;
break;
}
}
if(flag==1){
sum+=i;
}
}
lr_output_message("sum=%d",sum);
return 0;
}
输出的结果:sum=1060

扩展资料:方法二、使用函数:
Action()
{
int i;
int sum=0;
for(i=2;i<=100;i++){
if(isPrime(i)){
sum+=i;
}
}
lr_output_message("素数之和sum=%d",sum);//loadrunner的输出,其他编译器可能是printf
return 0;
}
int isPrime(a){
int j;
int flag=1;
for(j=2;j<=a-1;j++){
if(a%j==0){
flag=0;
break;
}
}
return flag;
}

#include<stdio.h>
#include<math.h>
int shu(long unsigned num) //判断一个数是否素数
{
int t,i;
t=sqrt(num)+1;
for(i=2;i<t;i++)
{
if(num%i==0)
break;
}
return i==t;
}
int main()
{
int i,k=0,n=100; //求3至100间的素数
for(i=3;i<n;i++)
if(shu(i))
{
k++;
printf("%.3d ",i); //是的话,计数器加1,并按三位数形式打印输出
if(k%5==0)printf("\n"); //5个数一行
}
printf("\nsum:%d\n",k);
}

附输出结果:
003 005 007 011 013
017 019 023 029 031
037 041 043 047 053
059 061 067 071 073
079 083 089 097
sum:24

这里有一个判断素数的程序,你可以参考参考。

#include<stdio.h>
void main()
{
int number;
int prime(int number);
printf("请输入一个正整数:\n");
scanf("%d",&number);
if (prime(number))
printf("\n %d是素数. ",number);
else
printf("\n %d不是素数. ",number);
}

int prime(int num) /*此函数用于判别素数*/
{ int flag=1,n;
for(n=2;n<num/2 &&flag == 1;n++)
if (num%n==0)
flag=0;
return(flag);
}

#include<stdio.h>
#include<math.h>
void main()
{
int n;
int pri(int x);
for(n=1;n<=100;n++)
{
if(pri(n)==0)
printf("%d是素数。\n",n);
// else printf("%d不是素数。\n",n);
}
}
int pri(int x)//判断一个数是否为素数的函数
{
int i,r,w;
w=0;
i=2;
while(i<=sqrt(x)&&w==0)
{
r=x%i;
if(r==0)w=1;
else i++;
}
return (w);
}
我刚刚试过,可以运行了。

#include<stdio.h>
void main ()
{
int i=100,c,a;
while(i<=200)
{
c=2;
while(c<=i)
{
a=i%c;
if(a==0)
{
printf("%d\n",i);
c=i+1;//这里赋值后会有点问题。
}
else c=c+1;
}
i=i+1;
}
}
以下是我编的!可以看下:
#include<stdio.h>
#include<math.h>
void main()
{ int m,i,k,n=0;
for(m=101;m<=200;m++)
{k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
if(i>=k+1)
{printf("%4d",m);
n++;
}
if(n%10==0)
printf("\n");
}
printf("\n");
}


1-1\/2+1\/3+1\/4-1\/5+1\/6+1\/7+1\/8-1\/9……1\/n 用C语言写出代码
include <stdio.h> int main(){ int n;int x = 1;double i;double sum = 0.0;printf("请输入 n: ");scanf("%d", &n); \/\/输入n for(i = 1; i <= n; i++){ sum = sum + (x)*1\/i;x = x*(-1); \/\/用来控制表达式的正负 } printf("%f\\n", sum);return...

对1-1\/2+1\/3-1\/4...1\/n进行C语言编程
\/\/给和字符串分配空间,长度暂时设成len1*len2 char *sum = (char *) malloc((len1 * len2 + 1) * sizeof(char));\/\/分配的空间初始化为0 memset(sum, '0', (len1 * len2 + 1) * sizeof(char));\/\/从字符串末尾进行处理 for(int i = len1 - 1; i >= 0; i--){ \/\/...

...直到最后一项的绝对值小于10-4为止。用C语言怎么编程,求答案_百度...
用一个for循环完成计算。由于分母的增量是首项为0,公差为1的等差数列,所以用一从1开始、增量为1的计数变量i兼作分母的增量;分母用一个从1开始、增量为i的变量n承载,另用一个浮点变量t动态记录每项的绝对值,当t>=题设要求1.0E-4时,将t加(i为奇数)或减(i为偶数)于浮点和变量s,直到t<...

用C语言求 1!-1\/2!+1\/3!-1\/4!...+1\/n! 我自己写的,在自定义函数那里一直...
{ int i;float x,y,sum=0;for(i=1,x=1; i<=n; i++){ x=x*i;x=-x;y=(-1)\/x; \/* 编程规范建议,有符号时记得加括号*\/ sum=sum+y;} return sum;} 备注: 程序的格式很重要,缩进及变量的命名都有一定的规范,这些小的细节都要关注!!

C语言中增1减1运算符
其结果是相同的,都是使该变量的值增加或减少1。然而,当它们用在表达式中,其效果就不同了。当递增或递减运算符放在其运算变量前面进行前置运算时,C语言在使用该变量之前进行递增或递减操作;如果运算符在运算变量的后面进行后置运算,那么,C语言在使用运算变量的值之后执行递增或递减运算。

用c语言求1-1\/2+1\/3+...+1\/99-1\/100
<3> j根本没有定义,从那里来的 include<stdio.h> int main(){ int i,k;double z,sum;sum=0.0;i=1; \/\/当前项的符号 for(k=1;k<=100;k++) \/\/分母 { z=i*(1.0\/k); \/\/各项 sum=sum+z;i = -1*i; \/\/交叉进行修改符号 } printf("答案=%lf\\n",sum);retur...

C语言 用p\/4>1-1\/3+1\/5-1\/7+...的公式求p的近似值,直到最后一项的绝对...
include <stdio.h> int main(){ int i,sign;double sum;for(sum=0,i=1,sign=1;1.0\/i>=1e-6;i+=2,sign=-sign)sum+=sign*1.0\/i;printf("%lf\\n",sum*4);return 0;}

...1\/4+……+1\/99-1\/100 用C语言如何编写 别说叫我看书上的
if (i % 2 == 0)\/\/你可以观察一下那个表达式,如果分母为偶数的话是减去,\/\/分母是奇数的话是加上。使用i%2,如果i%2的结果是0,即i整除2的结果 \/\/是0,所以i就是偶数,我们就在它前面乘以-1,这样加上就相当于减去了,\/\/反之,那就是奇数,那就直接写就好了。sum = sum + (-1.0)...

C语言:编程求求1-1\/3+1\/5-…直到最后1项的绝对值<0.00001。
VC6.0调试通过了,你的是最后一项绝对值小于那个数,所以你的while条件错了 include "stdio.h"include "math.h"void main(){ double s=0,a;int f=-1;int x=1;while(1){ a=f*1.0\/x;if(fabs(a)<0.00001)break;s=s+a;x=x+2;f=-f;} printf("1-1\/3+1\/5-...=%.2f\\n"...

1-1\/2+2\/3-3\/4+4\/5的C语言程序怎么写
float s=0;for(float i = 1; i <=5;++i){ if(i == 1) s += 1\/i; else s += (i-1)\/i;}那么你会写1-1\/2+2\/3-3\/4+4\/5吧,如下:float s=0;for(float i = 1,j=1; i <=5;++i,j *=-1){ if(i == 1) s += 1\/i; else ...

虎亭区15039408629: 用c语言求解一到一百的素数 -
简胁费宁: #include<math.h> #include<stdio.h> #define N 100 void main(){ int i,j,line,a[N]; for(i=1;i<N;i++) a[i]=i; /*初始化数组*/ for(i=2;i<sqrt(N);i++){ for(j=i+1;j<N;j++){ if(a[i]!=0&&a[j]!=0) if(a[j]%a[i]==0) a[j]=0; } } printf("\n"); for(i=2,line=0;i<N;i++){ if(a[i]!=0){ ...

虎亭区15039408629: C语言编一个程序,求100以内的全部素数 -
简胁费宁: #include<stdio.h> int prime(int n)//求素数过程,是返回1,不是返回0 { for(int i=2;i<int(n);i++) if (n%i==0)return 0; return 1; } void main() { int i=0; for(int j=2;j<100;j++) if(prime(j)==1){printf("%d\t",j) ;i++;} }

虎亭区15039408629: 用C语言求1到100之间的素数,谁能帮忙解释这个运算的流程??谢谢了. -
简胁费宁: i为被测试是否是素数,j为被除数,k是标志位 规则是:i从1数到100,每个数都要经过测试,i除以2,看是否能整除,除以3,看是否能整除,一直除以到i-1,看是否能整除(这其中的过程,1和i本身不需要测试,其余的数字只要有一个能被整除,就满足if ((i % j) == 0)的条件,把k标志位置为1.外面判断k如果为1,说明有数被整除,不是素数,不打印,要是k等于0,就是素数,能打印).懂了么?希望采纳

虎亭区15039408629: 求一到一百的素数和,用C语言打 -
简胁费宁: #include <stdio.h> void main() { int i,j,s=0; for(i=1;i<=100;i++) { for(j=2;j<i;j++) if(i%j==0) break; if(j==i) s+=i; } printf("s=%d",s); }

虎亭区15039408629: C语言,输出1到100的素数.编程如下,大家给看看,谢谢了. -
简胁费宁: 第一层while循环进入时,isprime都要初始化,不然如果上一个不是素数,那么现在进入while循环时isprime就是0,以后永远不会输出数据啦,也就是即便后面有素数也不会输出来,因为isprime永远是0,printf("%d\n",n);永远不会执行.你应该每次进入第一层while循环都要初始化isprime为1,是素数值不变为1,输出来.要是不是素数,那么在第二层while循环中isprime就改为0啦,不输出来.你看看明白啦吧?

虎亭区15039408629: 用c语言求出1到100内的所有素数,并将结果写到解答.txt中 -
简胁费宁: #includeint fun(int n) { int i; for ( i=2;i return 1; } void main() { FILE *fp; char buffer[80]; int i; if ( fp=fopen("解答.txt","w+" ) { for ( i=1;i<=100;i++ ) if ( fun(i) ) { sprintf(buffer,"%d\n",i); fputs(buffer,fp); } fclose(fp); } }

虎亭区15039408629: c语言 用筛选法求100以内的素数 -
简胁费宁: #include<stdio.h> main() {int k,i;printf("100以内的素数是:");for(k=1;k<=100;k++){for(i=2;i<k/2;i++){if(k%i==0)break;}if(i<k/2)printf("%d\t",k);} } 写的不是很好,因为我只是一个大一的学生.大概就是这样的,现在的我是天津工业大学的学生,就这样....

虎亭区15039408629: 求1到100内,素数的个数(c语言) -
简胁费宁: #include <stdio.h> int isprime(int a) { int i; for(i = 2; i < a; i++) if(a % i == 0) break; if(a == i) return 1; else return 0; } int main(void) { int count = 0; int i; for(i = 2; i < 100; i++) { if(isprime(i)) count++; } printf("素数%d个\n",count); printf("\n"); }

虎亭区15039408629: C程序 输出1到100的素数. -
简胁费宁: 人家楼主的意识是让我们找找他的程序的错误嘛~~我给你看看哈...void main() {long int x,y;for(x=1;x<100;x++){ for(y=2;y<x;y++){if(x%y==0) break; }if(x==y) /*把这里也改改!!*/ printf("%d ",x); } getch(); } 其实问题就出在你的几个大括号上面,掉了几个大括号!这个程序我已经调试过了,没有问题!!

虎亭区15039408629: C语言编写程序,找出100以内的所有素数,存放在一位数组中,并将所找到的素数按每行10个数的形式输出. -
简胁费宁: c#参考:/*质(素)数推算*/List<int> 质数集 = new List<int>() { 2 }; bool 判 = true; int 范围 = 999;string 位数 = ""; foreach (int a in Enumerable.Range(0, 范围.ToString().Length)) 位数 += "0";foreach (int 自然数 in Enumerable.Range(2, ...

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