iT邦幫忙

0

印出範圍100-1000中的質數

  • 分享至 

  • xImage
#include<stdio.h>
int prime(int);

int main() {
	int n = 100;
	printf("%d",prime(n));
	return 0;
}
int prime(int n){
	int m;
	for(n=100; n<=1000; n++){
		for(m=2; m<1000 ; ++m){
			if(n%m != 0)
				return n;
		}
	}	
}

想了很久不知道哪個部份出了問題,
希望有人能替我解答!
非常感謝

看更多先前的討論...收起先前的討論...
淺水員 iT邦大師 6 級 ‧ 2022-12-15 00:15:53 檢舉
函數遇到 return 就會終止,並把資料回傳
#include<stdio.h>

void find_primes(int n) {
int m;
for (n = 100; n <= 1000; n++) {
for (m = 2; m < 1000; ++m) {
if (n % m == 0)
break;
}
if (m == n)
printf("%d ", n);
}
}

int main() {
find_primes(100);
return 0;
}
小幫手 iT邦新手 5 級 ‧ 2022-12-19 00:01:14 檢舉
(質數)在下列回答中建議,還有一些瑕疵需自行修正。
小幫手 iT邦新手 5 級 ‧ 2022-12-19 21:45:51 檢舉
建議學習方式,拿看的懂的教科書先從最基礎的部分,題庫範例一個字一個字KEY進編譯器中,不看答案一個一個範例測試,看所有例題的變化,等熟悉後試著靠自己寫出一個小專題(不用非常難的專題,但都要涵蓋最基本的應用才行)。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
tryit
iT邦研究生 4 級 ‧ 2022-12-15 02:23:59
#include<stdio.h>
int prime(int);

int main() {
	int n = 100;
    for (n=100; n<=1000; n++){
        int temp = prime(n);
        if (temp != 0)
            printf("%d ",prime(n));
    }
	return 0;
}
int prime(int n){
	for(int m=2; m<n ; ++m){
		if(n%m == 0)
			return 0;
	}
    return n;
}

把其中一個for迴圈拿到main即可,然後部分程式碼進行些微調整

0
小幫手
iT邦新手 5 級 ‧ 2022-12-19 12:14:48

#include<stdio.h>

int main(int argc, char *argv[]) {

int n;
int q;
int p,p1;
int r,r1;
int s,s1;
int t,t1;
int x,x1;

for(n=2; n<=500; n++){
	p = n * 2;
	r = n * 3;
	s = n * 5;
	t = n * 7;
	x = n * 11;
	p1 = ~p;
	r1 = ~r;
	s1 = ~s;
	t1 = ~t;
	x1 = ~x;
	for(q=-100; q>=-1000; q--){
		if(((q==p1)||(q==r1)||(q==s1)||(q==t1)||(q==x1))){
		//	printf("%d\n",q); //檢查篩選數值 
			if(q % 2){
			//	printf("%d\n",q); //檢查篩選數值
				if(q % 3){
				//	printf("%d\n",q); //檢查篩選數值
					if(q % 5){
						//	printf("%d\n",q); //檢查篩選數值
						if(q % 7){
							printf("%d\n",q); //檢查篩選數值
						}
					}
				}
			}
		}
	}	
}
return 0;

}

這是質數顯示方法之一,還有一些瑕疵需自行修正,給各位參考看看,感恩。

我要發表回答

立即登入回答