#include stdio.h
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了新絳免費(fèi)建站歡迎大家使用!
int main(){
int a=0; // 素?cái)?shù)的個(gè)數(shù)
int num=0; // 輸入的整數(shù)
printf("輸入一個(gè)整數(shù):");
scanf("%d",num);
for(int i=2;inum;i++){
if(num%i==0){
a++; // 素?cái)?shù)個(gè)數(shù)加1
}
}
if(a==0){
printf("%d是素?cái)?shù)。\n", num);
}else{
printf("%d不是素?cái)?shù)。\n", num);
}
return 0;
}
編寫一個(gè)函數(shù)實(shí)現(xiàn)判斷一個(gè)整數(shù)是否是素?cái)?shù)。如果輸出也在函數(shù)內(nèi)進(jìn)行,才需要把數(shù)組傳到函數(shù)中,否則只要傳數(shù)組元素就可以了。
你原來的程序問題在于:
1. 缺少#include"math.h"。因?yàn)橛玫搅藄qrt();
2. if(ss(a[i])==1)語句中調(diào)用函數(shù)ss的格式與定義不符:a[i]不能傳給a,且缺第二的參數(shù)。
3.? 判斷素?cái)?shù)時(shí),沒有考慮對數(shù)字1的處理。
輸出在主程序中進(jìn)行的話,參考White_MouseYBZ網(wǎng)友的回答,進(jìn)行修改即可。
如果打印也在函數(shù)中進(jìn)行,原程序可改為:
#include"stdio.h"
#include"math.h"??//增加
main()
{
int?a[10],n,i;
void?ss(int?a[],int?n);
scanf("%d",n);
for(i=0;in;i++)
scanf("%d",a[i]);
ss(a,n);//調(diào)用函數(shù),判斷并輸出
/×??for(i=0;in;i++)?????//整體刪除
if(ss(a[i])==1)
printf("%d\n";a[i]);?×/?
}
void?ss(int?a[],int?n)??//無需返回值,改成void
{?int?k,i,j,result;
for(i=0;in;i++)
{?if(a[i]!=1)????//避免1判斷為素?cái)?shù)
{?k=sqrt(a[i]);
for(j=2;j=k;j++)
if(a[i]%j==0)?break;
if(jk)??printf("%d?",a[i]);?//輸出素?cái)?shù)
}
}
}
好的,以下是C語言輸出一個(gè)數(shù)組中的素?cái)?shù)的代碼:
#include stdio.h
int main() {
int arr[] = {2, 3, 6, 7, 11, 13, 17, 19};
int len = sizeof(arr) / sizeof(arr[0]);
int flag;
printf("The prime numbers in the array are: ");
for (int i = 0; i len; i++) {
flag = 0;
for (int j = 2; j = arr[i] / 2; j++) {
if (arr[i] % j == 0) {
flag = 1;
break;
}
}
if (flag == 0 arr[i] != 1)
printf("%d ", arr[i]);
}
return 0;
}
該程序首先定義了一個(gè)整型數(shù)組arr,然后計(jì)算出數(shù)組長度len,接下來通過嵌套循環(huán)遍歷每個(gè)元素,判斷該元素是否為素?cái)?shù),最后輸出素?cái)?shù)。其中,內(nèi)層循環(huán)用于判斷元素是否為素?cái)?shù),如果該元素可以被2到(i/2)之間的任意一個(gè)整數(shù)整除,則該元素不是素?cái)?shù)。最后,如果flag值為0且該元素不是1,則表明該元素是素