用C语言把2-100之内的素数放到数组里,并且输出来。

作者&投稿:宇文兰 (若有异议请与网页底部的电邮联系)
c语言:将100以内的素数存放到一个数组中~

100当中有50个偶数,除了2外其他的都一定不是素数,于是100以内的素数应该少于50个,我们就以a[50]来存放这些素数吧.还有1不是素数。
main()
{
int a[50];
int i=5,j=3,m=1;
a[0]=2;a[1]=3;
for(i=5;i<100;i=i+2)
loop1: for(j=3;j<i;j++)
loop2:
if(i%j==0)
{i=i+2;goto loop1;}
else
{if(j==i-1)
a[++m]=i;
else
{j++;goto loop2;}
}
/*来验证一下是否正确*/
printf("%d
",m);/*看看有多少个素数*/
for(i=0;i<=m;i++)
printf("%d",a[i]);
}

#include "stdio.h"
#include "conio.h" //前两个头文件是个人风格,可以不要
#include "math.h"
int main(void) //这个也是个人风格问题,可以是main()
{
int i,j,k,a=0;
for(i=2;i<100;i++)
{
k=1;
if (i>3)
{
for(j=2;j<sqrt(i);j++)
{
if(i%j==0)
{
k=0;
break;
}
}
}
if(k)
{
a=a+1;
printf("%3d",i);
if(a%10==0)
{
printf("
");
}
}

}
getch();
}

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#define n 100

int main()

{

int a[n+1]={0};

int i,j;

for(i=2;i<=sqrt(n);i++){

if(a[i]==0){

for(j=2*i;j<=n;j+=i){

a[j]=1;

}

}

}

for(i=2;i<=n;i++){

if(a[i]==0)

printf("%d ",i);

}

return 0;

}

输出100以内的素数,思路:

假如自然数N不是素数,则除1和其本身之外,必然至少存在两个数A和B,使得A*B=N,则A和B中必有一个大于或者等于sqrt(N),另一个小于或者等于sqrt(N)。下面是粗略证明如果N是合数,则必有一个小于或者等于根号N的素因子.因为任何合数都可表示为两个或者更多个素数之积。

假如N是合数且其素因子都大于根号N,那么将产生矛盾:根号N*根号N>N。所以合数必有(至少)一个不大于根号N的素因子。

n的不大于根号的因子<=sqrt(n);n-1的不大于根号的因子<=sqrt(n-1),显然sqrt(n-1)<sqrt(n);所以2~n内的自然数的因子范围是2~sqrt(n);换句话说2~sqrt(n)的倍数覆盖了了2~n范围内的合数。

扩展资料:

数组使用规则:

1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。

2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。

3.如不给可初始化的数组赋初值,则全部元素均为0值。

4.如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5};可写为:static int a[]={1,2,3,4,5};动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。

参考资料:

百度百科-数组



遍历2到100之间所有整数,然后逐一判断是否为素数,如果是则存入数组。

最终遍历数组输出每个值即可。 具体如下:


1、素数的判断。 

根据素数定义,除了1和本身不存在其它约数的正整数为素数。

所以在C语言中判断n是否为素数可以从2开始到到n-1逐一尝试,如果可以整除说明不是素数。

更进一步,可以从2判断到n/2或者n的算术平方根,如果不存在约数,那么即为素数。

除此以外,判断素数的算法还有素数筛等。

2、判断素数的函数:

以遍历判断约数的方法为例,函数可以编写如下:

int isPrime(int n)//判断n是否为素数,如果是则返回1,否则返回0.
{
    int i;
    for(i = 2; i <= (int)sqrt(n); i ++)//从2到算术平方根遍历。
        if(n%i == 0) return 0;//存在约数,不是素数,返回0.
    return 1;//不存在约数,返回1,表示为素数。
}

3、整体代码示例:

#include <stdio.h>
#include <math.h>
int isPrime(int n)//之前的函数。
{
    int i;
    for(i = 2; i <= (int)sqrt(n); i ++)
        if(n%i == 0) return 0;
    return 1;
}
int main()
{
    int n;
    int a[100];
    int cnt=0;

    for(n = 2;n<=100; n ++)//遍历2到100所有整数。
        if(isPrime(n)) //判断是素数
            a[cnt++] = n;//存入数组。
    for(n = 0; n < cnt; n ++)//遍历存放素数的数组。
        printf("%d ", a[n]);//输出。
    printf("
");
    
    return 0;
}

运行结果如下:



#include"stdio.h"
#include"math.h"
main()
{
int i,j,k,m=0,n,a[50];
for(i=2;i<=100;i++)
{
j=sqrt(i);
for(k=2;k<=j;k++)
if(i%k==0)break;
if(k>j)
a[m++]=i;
}

for(n=0;n<m;n++)
printf("%d ",a[n]);
}

// oper.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
void main()
{
int a[100] ;
int i ,j ,z,m=0;
for (i=2 ; i<=200 ; i++)
{
for(j=2 ; j<= i ; j++)
{
if (i ==2)
{a[m]=i ; m++ ; break ;}
else
{
if(i%j==0)
{
if(i==j){a[m]=i ; m++ ; break ;}
else {break;}
}
else {continue ;}
}
}
}

for (z = 0 ;z<= m-1 ;z++)
{
printf("%d\n" ,a[z]) ;
}
}

a[50] 没有初始化,而且没有记录有多少个素数,建议记录下有多少个,然后打印循环里面设定下结束条件 n < 个数


用C语言编程计算2~100之间的素数和
【答案】:#include <stdio.h> int main() { int a[100],i=2,temp=0,total=0; while(i<=100) { i++; temp=i; if (i==2) { total+=i; } else { while(temp) { temp--; if (temp==1) { total+=i; break; } else if(temp!=1&&(i%temp)==0) break; } } } pr...

用C语言把2-100之内的素数放到数组里,并且输出来。
} 输出100以内的素数,思路:假如自然数N不是素数,则除1和其本身之外,必然至少存在两个数A和B,使得A*B=N,则A和B中必有一个大于或者等于sqrt(N),另一个小于或者等于sqrt(N)。下面是粗略证明如果N是合数,则必有一个小于或者等于根号N的素因子.因为任何合数都可表示为两个或者更多个素数之积。

用C语言编程:输出2~100之间所有完数,完数是指该数各因子之和等于该数...
C语言程序如下:include <stdio.h> int main(){ long int i,j,sum;for(i=2;i<100;i++){ sum=0;for(j=2;j<=i\/2;j++){ if(i%j==0){ sum=sum+j;} } if(i==sum+1)printf("%d\\n",i);} }

c语言怎样求2到100之间的素数?
void main(){ int n=0, i, j,w,k;for(i=2;i<=1000; i++){ w=1;k=sqrt(i);for (j=2; j<=k; j++)if (i%j==0) {w=0;break;} if (w) { ++n;if (n%10==0) printf("%d\\n",i);else printf("%d\\t",i);} ...

运用c语言程序写出:求2~100之间的素数,将之存入数组,并输出
int i, j = 2, n = 0, a[100] = {0};for (i = 2; i < 101; i++) { while (i % j != 0 && j <= i) { j++;} if (j == i) { a[n] = i;printf("%d ", a[n]);n++;j = 2;} }

C语言编程求出2~100之间所有的素数以及这些素数之和
i;for(i = 2; i < a; i++)if(a % i == 0)break;if(a == i)return 1;elsereturn 0;}int main(void){int i;int sum = 0;for(i = 2; i < 100; i++){if(isprime(i)){printf("%d ",i);sum = sum + i;}}printf("\\nsum = %d\\n",sum);printf("\\n");} ...

c语言找出2~100之间的所有素数,每五个一行输出。
1、while前面增加一行:i=2,tag=1;2、tag=0;的后面增加break;并把它们花括号在一起,写成:{tag=0;break;} 3、i++;后面增加一个花括号,写成:i++;} 4、两行printf("\n");之间的花括号,去掉一个,留3个。应该没有其他错误了。

c语言程序设计2-100之间所有素数
因为你要验证2到100的每一个数字,所以要一个循环。又要在验证每一个数字的时候,让这个数(x)不断的除以从2到x-1的每一个数字。所以又要一个循环。所以应该是两个循环嵌套。你目前的思路是错误的。建议你根据我说的思路重写。还有 else if (x==n)……...

C语言编写:求2-100中,每个数的质因子
flag==1); \/* 如果num还能继续分解,则继续循环,否则退出循环 *\/ if(have_factor==1) { printf("%d",num); } else { printf("\\n\\n%d is a prime number!\\n",num);} return;} main(){ int k;for(k=2;k<=100;k++){ fun(k);} getch();} ...

C语言写一个分解2到100的质因数的程序,用循环,最好还用上break(作业要求...
include<stdio.h> include<math.h> int main(){int b,i,k;for(i=2;i<=100;i++){printf("%d=",i);b=i;k=2;while(k<=sqrt(i)){while(b%k==0){printf("%d",k);b\/=k;if(b>1) printf("*");} k++;} if(b>1)printf("%d",b);printf("\\n");} return 0;} ...

襄阳区13334124877: 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, ...

襄阳区13334124877: c语言:将100以内的素数存放到一个数组中 -
凤爸先泰: 100当中有50个偶数,除了2外其他的都一定不是素数,于是100以内的素数应该少于50个,我们就以a[50]来存放这些素数吧.还有1不是素数. main() {int a[50];int i=5,j=3,m=1;a[0]=2;a[1]=3;for(i=5;i<100;i=i+2)loop1: for(j=3;jloop2: if(i%j==0) {i...

襄阳区13334124877: C语言,求2到100以内的素数的代码 -
凤爸先泰: #include<stdio.h>#include"math.h"#defineN101 main() { inti,j,line,a[N]; for(i=2;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){ printf("%5d",a[i]); line++; } if(line==10) { printf("\n"); line=0; } } }

襄阳区13334124877: c语言求2到100内的素数 -
凤爸先泰: 你的代码很乱 而且完全有逻辑错误,即你的代码判断素数是有问题的.我帮你写了一个完整的逻辑清新的小代码,希望帮到你.#include #include #includebool IsPrimeNumber(int num)//判断num是否为素数,是的话返回true,否则返回false {...

襄阳区13334124877: C语言 求2到100内的所有素数和 -
凤爸先泰: #include <stdio.h> int main() { int a,b=1,c; for(a=2;a<=100;a++) { for(b=2;b<a;b++) ///b的范围是2到a.查找a的因子,如果这里面没有一个因为,则表示素数 { if(a%b==0) break; } if(b>=a) ///上面的for中的break没有执行,循环正常结束,所以是素数,输出 { printf("%d ",a); } } getch(); return 0; }

襄阳区13334124877: 用C编程,计算机100以内的素数,用数组!! -
凤爸先泰: #include<stdio.h> int main() { int a[50],count=1,i,j; a[0]=2; for(i=3;i<=100;i=i+2) //偶数肯定不为素数,所以用+2 { for(j= 3 ;j < i; j++) {if(i % j == 0)continue; } if( i == j) {a[count] = i;count ++; }return 0; }

襄阳区13334124877: C语言 对100以内的素数求和 请大神看看我哪儿错了...谢谢 -
凤爸先泰: 1、for(i=2;i<x;i++)这里在x=2的时候会因为2<2不成立,直接跳过循环,所以你的x=2没有加进去,简单点可以直接把2加到sum里面2、if(k!=0) 因为你上面没有对k赋值,所以如果是第一个素数,这里就会出错.令你在一个数判断完后没有将k再次恢复非零状态,所以在k=0后面k大概会一直等于0……3、sum+=x;放的位置不对,因该放到for(x=1;x<=100;x++){}里面,而不是放在for(i=2;i<x;i++){}里面,不然你一个x就会重复加很多遍.

襄阳区13334124877: C语言代码:定义一个数组int【20】,放置100以内的随机数,编程删除其中的素数,输出删除后的数 -
凤爸先泰: 1、定义数组是没有问题的,随机数生成也是没有问题. 2、然后用循环遍历数组for(i=0;i<20;i++)如果是素数,就设置为101; 3、然后再遍历数组,用一个if()语句,if(a[i]<100) printf("%d",a[i]);即可.而大于100的就是素数就不用输出了. 如果要代码的话可以追问啊,思路已经给出了.

襄阳区13334124877: 关于用C语言 找出100以内的素数(分值 好说 随你)! -
凤爸先泰: 一个数a如果不能被从2开始到a/2中的任何一个整数整除,那么这个数就是质数. 程序中 i 就是那个数,j 就是从 2 直到 i/2,如果有一个数能整除 i ,则跳出循环,也就是: if(i%j==0) break; 跳出循环后,因为 i 能被 j 整除, 所以不输出 i ; 如果没有一个数能整除 i ,j 到达上限 (i/2) 然后遇见for循环的判断语句 j此时 i 不能被 j 整除,所以 i 是质数,输出 i;以上就是这个程序的讲解

襄阳区13334124877: C++语言 输出100以内的素数 -
凤爸先泰: #include<iostream> using namespace std; int main() {int j;for(int i=2;i<100;i++) //第一循环是从2-100个数{for(j=2;j<=i/2;j++) //第二个循环是判断i的值是不是素数.{if(i%j==0) //如果被整除 那么就不是素数.跳出break;}if(j>i/2) //判断上面循环是否正常结束cout<<i<<" "; //如果上面循环正常结束 则i是素数 输出}cout<<endl; }

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