C语言:输入一个数,输出比这个数小的所有素数,并求出个数。

//C语言:输入一个数,输出比这个数小的所有素数,并求出个数。

 1 #include<conio.h>
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 #define MAX 100
 5 int fun(int lim, int aa[MAX])
 6 {
 7     int i, j,k=0;
 8     for (i = 2; i <= lim; i++)//罗列每个数
 9     {
10         for (j = 2; j < i; j++)//判断是否为质数(素数:只可以被1和本身整除,必须大于1)
11         {
12             if (i%j == 0)    break;
13         }
14         if (j >= i)    aa[k++] = i;
15     }
16     return k;
17 }
18 void main()
19 {
20   FILE *wf;
21   int limit,i,sum;
22   int aa[MAX];
23   system("CLS");//清屏
24   printf("输入一个整数:");
25   scanf("%d",&limit);
26   sum=fun(limit,aa);
27   for(i=0;i<sum;i++)
28      {
29       if(i%10==0&&i!=0)    /*每行输出10个数*/
30          printf("\n ");
31       printf("%5d ",aa[i]);
32     }
33 /******************************/
34   wf=fopen("out.dat","w");
35   sum=fun(15,aa);
36   for(i=0;i<sum;i++)
37      {
38       if(i%10==0&&i!=0)    /*每行输出10个数*/
39          fprintf(wf,"\n");
40       fprintf(wf,"%5d ",aa[i]);//向文件中写入。
41     }
42   fclose(wf);
43 /*****************************/
44 }

另一种方法:使用标志位。切记要进行标志位的复原。

 1 #include<conio.h>
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 #define MAX 100
 5 int fun(int lim, int aa[MAX])
 6 {
 7     int i,a=0,j=0;
 8     while (lim > 1)
 9     {
10         for (i = 2; i < lim; i++)
11         {
12             if (lim%i == 0)    a = 1;
13         }
14         if (a == 0)
15         {
16             aa[j++] = lim;
17         }
18         a = 0;//切记使用标志位要记得复位。
19         lim--;
20     }
21     return j;
22 }
23 void main()
24 {
25   FILE *wf;
26   int limit,i,sum;
27   int aa[MAX];
28   system("CLS");
29   printf("输入一个整数:");
30   scanf("%d",&limit);
31   sum=fun(limit,aa);
32   for(i=0;i<sum;i++)
33      {
34       if(i%10==0&&i!=0)    /*每行输出10个数*/
35          printf("\n ");
36       printf("%5d ",aa[i]);
37     }
38 /******************************/
39   wf=fopen("out.dat","w");
40   sum=fun(15,aa);
41   for(i=0;i<sum;i++)
42      {
43       if(i%10==0&&i!=0)    /*每行输出10个数*/
44          fprintf(wf,"\n");
45       fprintf(wf,"%5d ",aa[i]);
46     }
47   fclose(wf);
48 /*****************************/
49 }

原文地址:https://www.cnblogs.com/ming-4/p/10426877.html

时间: 2024-08-09 07:57:18

C语言:输入一个数,输出比这个数小的所有素数,并求出个数。的相关文章

5、输入一个不超过5位的正整数,编程实现:求出它是几位数,分别输出每位数字。

1 #include<stdio.h> 2 #include<math.h> 3 int flws(int); 4 void main() 5 { 6 int n,j,k=0; 7 printf("请输入一个正整数:\n"); 8 scanf("%d",&n); 9 j=n; 10 while(j!=0) //取位 11 { 12 j/=10; 13 k++; 14 } 15 if(k<=5) 16 flws(n,k); 17

c语言:用%f输出实数,只能得到6位小数及求float型数据的有效位数

1.用%f输出实数,只能得到6位小数. 程序: #include<stdio.h> int main() { double a = 1.0; printf("%f\n",a/3); return 0; } 结果: 0.333333 请按任意键继续. . . 2.float型数据的有效位数. 程序: #include<stdio.h> int main() { float a; a = 10000/3.0; printf("%f\n",a);

lightoj-1028 - Trailing Zeroes (I)(素数法求因子个数)

1028 - Trailing Zeroes (I) PDF (English) Statistics ForumTime Limit: 2 second(s) Memory Limit: 32 MBWe know what a base of a number is and what the properties are. For example, we use decimal number system, where the base is 10 and we use the symbols

汇编语言实现求两个数的最小公约数,平方差,各占和的百分比

按下列要求编程: (1)输入两个小于100的十进制正整数. (2)求出这两个数的所有公约数. (3)求出这两个数的平方差,若是负的要输出负号. (4)计算两个数各占和的百分比,并且按照“ %”的格式输出(小数点后保留两位). (5)数据的输入和结果的输出都要有必要的提示,且提示独占一行. (6)要使用到子程序. ? 源代码: 1 data segment 2 hh db 0dh,0ah,'$' 3 m1 db 'please enter a number:',0dh,0ah,'$' 4 m2 d

求N个数的最大公约数和最小公倍数

除了分解质因数,还有另一种适用于求几个较小数的最大公约数.最小公倍数的方法 下面是数学证明及算法实现 令[a1,a2,..,an] 表示a1,a2,..,an的最小公倍数,(a1,a2,..,an)表示a1,a2,..,an的最大公约数,其中a1,a2,..,an为非负整数.对于两个数a,b,有[a,b]=ab/(a,b),因此两个数最小公倍数可以用其最大公约数计算.但对于多个数,并没有[a1,a2,..,an]=M/(a1,a2,..,an)成立,M为a1,a2,..,an的乘积.例如:[2,

【c语言】依次将10个数输入,要求输出其中最大的数

// 依次将10个数输入,要求输出其中最大的数 #include <stdio.h> int main() { int a[10]; int i; int temp; printf("请输入10个数:"); for( i = 0; i < 10; i++ ) { scanf("%d",&a[i]); } for( i = 0; i < 10; i++ ) { if( a[i] > a[i+1] ) { temp = a[i];

&#8203;用c语言打印自定义的乘法口诀表。例如:输入9,输出9*9口诀表,输入12,输出12*12的乘法口诀表。

用c语言打印自定义的乘法口诀表.例如:输入9,输出9*9口诀表,输入12,输出12*12的乘法口诀表. #include <stdio.h> int main () { int n; int i, j; printf ("请输入要打印多大的乘法口诀表"); scanf ("%d",&n); for (j=1; j<=n; j++) { for(i=1; i<=j; i++) { printf ("%d*%d=%2d &quo

程序题目:输出图形 输入:n为打出图形的行数, m为每行的个数,t为图形符号

package com.day; import java.util.Scanner; public class M { public static void main(String[] args) { Scanner sc=new Scanner(System.in); /* System.out.println("用户请输入图形的行数="+"每行的个数="+"图形符号="); int n=sc.nextInt(); int m=sc.nextI

c语言代码编程题汇总:将三个随机的三个数按从大到小输出

将三个随机的三个数按从大到小输出 程序代码如下: 1 /* 2 2017年3月12日17:55:24 3 功能:将三个随机的三个数按从大到小输出 4 */ 5 #include"stdio.h" 6 void fun(int ,int ,int ); 7 void fun1(int , int ); 8 int main() 9 { 10 int a,b,c; 11 printf("please input three number :"); 12 scanf(&q