1. 用c語言如何求前20個質數
flag=0;
num=1;
for(i=1,i<1000,i++)
{
for(j=1,j<i,j++)
{
if (mod(i/j)==0) then
{
flag=1;
break;
}
}
if (flag==1) then
flag=0;
continue;
else
printf(i);
num=num++;
if (num>10) then break;
endif
}
大約是這樣子,好久沒寫C了 語法都忘干凈了。
最笨的方法:雙循環 第一循環遍歷1-1000的整數。第二循環判斷該整數是否能被1和他本身以外的地數整除,如果能則跳出循環試下一個數,如果該數是質數則列印,累加器計數。直到找出10個數 結束外層循環。
2. C語言 求10-20以內素數之和
{
int m,i;
for(m=2;m<=10;m++)
{
for(i=2;i<m;i++)
if(m%i!=0) /*為什麼要用!=呢,這樣只要遇到不能被整除的數就會結束循環,這樣有些數字就會判斷錯誤*/
break; //跳出內層循環
printf("%3d",m); /*這個輸出在外層循環中,只要內層循環結束,就會執行,所以就算break起作用了,也只是跳出內層循環,還是會執行這一句,所以會順序輸出m的值*/
}
}
改:
{
int m,i;
for(m=2;m<=10;m++)
{
for(i=2;i<=m;i++) //改成i<=m,因為素數只能被1和他本身整除
if(m%i==0)//判斷是否有數能將m整除
break; //有則跳出內層循環
if(i==m)/*如果m能被其他數整除,則跳出循環後i值一定比m小,如果只被m本身整除,則跳出循環後i==m,證明m為素數*/
printf("%3d",m); //滿足條件才輸出
}
}
3. 用C語言建造一個單鏈表,輸出20以內的素數
你的要求說得不是很清楚,下面提供的這個程序先生成一個存儲0~20的單鏈表,然後剔除其中非素數節點,最後列印出經處理後僅剩素數節點的單鏈表。#include <stdio.h>
#include <math.h>
#include <malloc.h>
#include <conio.h>
typedef struct node
{
int n;
struct node *Next;
}num;
int is_prime(int num)/*自定義函數:判斷是否素數*/
{
int i,sq;
if(num<=1) return 0;
sq=(int)sqrt(num);
for(i=2;i<=sq;i++)
{
if(num%i==0) break;
}
if(i<=sq)
return 0;
else
return 1;
}
main()
{
int i,m=0;
num *h,*p,*s;
if((h=(num *)malloc(sizeof(num)))==NULL) exit(0);/*生成一個存儲1~20的單鏈表*/
h->n=1;/*h:表頭,下同*/
h->Next=NULL;
p=h;/*p:當前節點,下同*/
for(i=2;i<=20;i++)
{
if((s=(num *)malloc(sizeof(num)))==NULL) exit(0);
p->Next=s;
s->n=i;
p=s;
}
p=h;
s=p;
for(i=0;i<20;i++) /*遍歷鏈表,剔除非素數節點*/
{
if(is_prime(p->n)==1)
{
s=p;
p=p->Next;
m++;
if(m==1) h=s;
}
else
{
s->Next=p->Next;
p=p->Next;
}
}
p=h;
for(i=1;i<=m;i++)/*列印整理後的單鏈表*/
{
printf("%d ",p->n);
p=p->Next;
}
getch();
return;
}
4. c語言實現輸出1~100內質數,求思路。謝謝!
利用循環,讓這個數從2除到開根號——>for(i=2;i<=sqr(m);i++)
然後循環內判斷是否能被整除,並用flag做個標記,初值flag=1——>if(m%i==0)flag=0
循環完成,即判斷結束,利用標記判斷是否是質數,如果是,那麼flag應該還是為1——>if(flag)printf……
以上就是判斷部分,那麼從1~100可以在以上基礎上加上外循環for(m=1;m<=100;m++)就實現從1~100依次判斷了
5. c語言輸出10到20的所有素數,並統計素數的個數
int f(int n){
int i;
for (i=2;i<n;i++) if (n%i==0) return 0;
return 1;}
void main(){
int i,n=0;
for (i=10;i<=20;i++) if (f(i)) {printf("%d\t",i);n++;}
printf("一共 %d 個\n",n);
}
6. C語言題:從鍵盤輸入20個整數,求這20個數的平均值,然後找出其中所有的質數並列印出來, 在線等 急急
求平均數和找質數的c語言代碼如下:
#include<stdio.h>
void main()
{
int a[20],n,j;
printf("輸入20個整數:")
for(i=0;i<20;i++)
{
scanf("%d",&a[i]);
}
//求平均數
n=0;
for(i=0;i<20;i++)
{
n+=a[i];
}
printf("平均數是:%d\n",n/20);
//找出質數並顯示
printf("其中質數是:");
n=0;
for(i=0;i<20;i++)
{
for(j=2;j<a[i];j++)
{
if(a[i]%j==0)
break;
}
if(a[i]==j)
{
//每行3個質數對齊顯示
printf("%d\t",a[i]);
n++;
if(n%3==0) printf("\n");
}
}
}
有疑問可以追問,有問必答。
7. C語言求1到n所有質數
按照題目要求編寫的程序如下(見圖)
8. c語言 輸入20個數,找出其中的質數(素數)
void main(){
int a[20]。i。j。k;
for(i=0;i〈=19;i++)scanf(「%d」,&a[i]);
for(i=0;i<=19;i++){k=0;
for(j=2;j<a[i];j++) if(a[i]%j==0) k=1;
if(k==0) printf("%d",a[i]);
};
};
9. C語言 輸出1到100之間的全部素數
有三種方法:
1、輸出1-100以內的素數:
(9)c語言輸出20以內所有質數擴展閱讀:
在這個小程序中主要用到的是for循環
for 循環語句的一般形式為:
for (表達式1; 表達式2; 表達式3)
{
語句;
}
需要注意的兩點:
1) 表達式1、表達式2和表達式3之間是用分號;隔開的,千萬不要寫成逗號。
2)for(表達式1;表達式2;表達式3)的後面千萬不要加分號,很多新手都會犯這種錯誤——會情不自禁地在後面加分號。
因為 for 循環只能控制到其後的一條語句,而在C語言中分號也是一個語句——空語句。所以如果在後面加個分號,那麼 for 循環就只能控制到這個分號,下面大括弧裡面的語句就不屬於 for 循環了。
10. C語言如何實現質數輸出
通過除以小於被除數的所有數
a%d==0 則count『++;
判斷如果count==0,printf(「%d」,a);