用c语言编写程序输出1-100内的素数

作者&投稿:巫张 (若有异议请与网页底部的电邮联系)
用C语言编写在自然数中输出100以内的素数?~

C语言经典例子之求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是素数
}}

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

用常规的判素性方法可如下实现
#include "stdio.h"
#include "math.h"
bool IsPrime(int x)
{
int i, s;
s = sqrt(x + 1);
for(i = 2; i <= s; i++)
if(x % i == 0) return false;
return true;
}
void main( )
{
int i;
for(i = 2; i < 100; i++)
if(IsPrime(i))
printf("%d ", i);
}
也可采用筛选法,筛选法效率会高一些,楼上的虽然也是筛选法,但他的效率却并不高。筛选法的思路是将那些非素数筛掉,留下那些素数。命题“对于1<x<100的合数x, 必含有小于10的质因子”可以证明是真命题,它的逆反命题“对于1<x<100的数,如果不含有小于10的质因子,则它必为素数。”则也是真命题。因此筛除时,只要筛除含有10以内的质因子的数就可以了。下面给出筛选法的代码。
#include "stdio.h"
void main( )
{
bool isprime[100];
int i, j;
isprime[0] = false;
isprime[1] = false;
for(i = 2; i < 100; i++) /*先初始化2~100的都是素数,然后将非素数筛除掉*/
isprime[i] = true;
for(i = 2; i < 10; i++) /*将所有含有小于10的质因子的数筛除掉*/
{
if(isprime[i]) /*如果i是素数,则将它的倍数全部筛掉*/
for(j = i * i; j < 100; j += i) /*从i*i开始检测是因为小于i*i的合数都被小于i的素数筛除了*/
isprime[j] = false;
}
for(i = 2; i < 100; i++)
if(isprime[i])
printf("%d ", i);
}

#include <stdio.h>

void main()
{
    int i = 0;
    int j = 0;
    for (i = 2; i <= 100; i++)
    {
        for (j = 2; j * j <= i; j++)
        {
            if (0 == i % j)
                break;
        }

        if (j * j > i)
            printf("%d
", i);
    }
    return;
}


//求100以内的素数,
//质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
#include <stdio.h>
#include <math.h>
int main(void)
{
 int i,j,a[101];
 for(i=0;i<=99;i++)
  a[i]=i+1;
  a[0]=0;          //将1挖掉       
 for(i=1;i<sqrt(100);i++)     //将2,3,4,5,6,7,8,9的倍数挖掉
  for(j=i+1;j<=100;j++) 
  {
   if(a[i]!=0 && a[j]!=0) //寻找没有被挖空的数组
   if(a[j]%a[i]==0)      //将a[i]的倍数挖掉
   a[j]=0;    
  }
 
  
 for(i=1,j=0;i<101;i++)
 {
  if(a[i]!=0)
  {
   printf("%-2d ",a[i]);
   j++;     //记录输出的数据
  }
  if(j==10)     //控制输出10 个数据就换行
  {
   printf("
");
   j=0; 
  }
  
 }
 
 return 0;
}
~~~~~~~~~~~~~~~~~~~
说实话楼上的代码,没注释我看不太懂



用C语言编写程序:输入一个人的名字、年龄、工资并在最后输出来。
struct imfomation{ char name[20];int age;int salary;};include "stdio.h"void main(){ struct imfomation a;\/\/a为结构体变量 printf("请输入姓名:\\n");gets(a.name);printf("请输入年龄:\\n");scanf("%d",&a.age);printf("请输入工资:\\n");scanf("%d",&a.salary);printf("...

编写c语言程序,实现输入输出。
include void main(){ int n;printf("input:\\n");scanf("%d",&n);if(n%3==0&&n%5==0)printf("yes\\n");else printf("no\\n");return;}

用C语言编写一个程序,从键盘上输入一个小写字母,将其本身及对应的大写字...
prinft("大写字母是:%c\\n",ch);} else(printf("请输入大写字母");)示例三:include <stdio.h> main(){ char c; \/\/声明变量 scanf("%c",&c); \/\/键盘上取值 printf("%c %c",c,ch-'a'+'A');\/\/本身和大写输出 } ...

编写一个C程序,运行时输入a,b,c三个值,输出其中值最大者
include<stdio.h> int main(){ int a,b,c,max;printf("请输入三个数:\\n");scanf("%d%d%d",&a,&b,&c);if(a>b)max=a;if(c>max)max = c;printf("三个数中最大的数为:%d",max);return 0;}

用C语言编写程序,输出ASCII码
用C语言编写程序,然后输出ASCII码可以将字符以整数形式输出即为输出ASCII码,具体编程的思路和方法如下:1.首先定义一个变量a作为需要输出ASCII码的变量,这里演示以字符变量a为例。2.接着使用scanf()函数接受从键盘输入的字符。3.然后使用printf()语句将字符a用整数的格式输出。4.最后运行程序,就可以...

用c语言编写一个可以输出20个*和HELLO WORD!和20个横线–的程序?
参考代码:

编写一个C语言程序,输出如下图案 * ***
include<stdio.h> int main() { int i,j,k; for(i=1;i<=4;i++) \/\/先打印上边的四行 { for(j=1;j<=4-i;j++) \/\/控制要打印的空格数量 printf(" "); for(k=1;k<=2*i-1;k++) \/\/控制要打印的星号数 printf("*"); printf("\\n"); } for(i=1;i<=3;i++) { for...

C语言编写程序向屏幕输出20个HELLO,且每行只输出一个,并在每个HELLO前...
include<stdio.h> void main(){ for(int i=0;i<20;i++)printf("%d.HELLO\\n",i+1);}

如何用c语言编写一个程序?
include<stdio.h> int main(){ int i,m=0;for(i=2;i<=100;i+=2) m=m+i;printf("%d\\n",m);return 0;} 或 include int main(){ int i,sum=0;for(i=1;i<=50;i++){ sum=sum+2*i;} printf("2+4+6+…+98+100=%d\\n",sum);return 0;} ...

C语言编程 编写程序,在屏幕上输出下面的图案(要求用for 循环实现...
1、先双击打开桌面上的C-Free5软件。2、打开编程软件以后,创建一个新页面来编写程序;可以直接点击空白页面,也可以先点击【文件】,再点击【新建】。3、代码:#include<stdio.h>\/\/头文件,int main(void)\/\/主函数{ printf("打印一个C图案:"); printf("\\n"); printf(" ***"); ...

深圳市13492301694: 用C语言编写一个程序,输出1到100中的质数 -
干趴苦参: #include<stdio.h> #include<windows.h> int f(int n) {if(n<2)return 0;<br>int i;<br>for(i=2;i<=n/2;i++)<br>if(n%i==0)<br>return 0;<br>return 1;<br>} int main() {int i;<br>for(i=1;i<=100;i++)<br>if(f(i))<br>printf("%5d",i);<br>system("pause"); <br>}

深圳市13492301694: 怎么用C语言编写1到100之间的偶数? -
干趴苦参:[答案] (一) #include int main() { int i=1; printf("1-100之间的偶数有:\n"); for(;i

深圳市13492301694: 请编C语言程序实现:输出1到100之间(包括100)所有能被5整除的数 -
干趴苦参: #include <stdio.h> int main() {int i;for (i=1;i<=100;i++) {if (i%5 == 0) {printf("%d ",i);}}return 0; }

深圳市13492301694: C语言编程:试编程计算并输出从1到100的整数和. -
干趴苦参: #includevoid main(){ int sum = 0; for(int i = 1; i <= 100; i++) sum = sum + i; printf("和为%d",sum);}

深圳市13492301694: 输出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; }

深圳市13492301694: c语言程序中怎样输出1到100的素数 -
干趴苦参: #includevoid main() { int m,i,k; for(m=1;m=k+1) { printf("%d ",m); } } }

深圳市13492301694: 编一个C语言程序从1加到100并输出结果 -
干趴苦参: 一群死脑筋, #include <stdio.h>int main() {printf("5050"); }这才是最简单的、效率最高的代码.

深圳市13492301694: c语言在屏幕上显示1 - 100的整数编程 -
干趴苦参: 1234567891011121314 #include <stdio.h> intmain() { inti; for(i=1;i<101;i++) { printf("%-4d",i); if(i%10 == 0) printf("\n"); }return0; } 请采纳.

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

深圳市13492301694: 用c语言求1到100的和 -
干趴苦参: #includeint main(void) { int Sum = 0; for(int i=1;i<=100;i++) { Sum +=i; } printf("%d",Sum); }

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