怎么用c语言判断一个数是不是素数 如何用c语言判断一个数是不是素数?
\u5982\u4f55\u7528c\u8bed\u8a00\u7f16\u7a0b\u5224\u65ad\u4e00\u4e2a\u6570\u662f\u4e0d\u662f\u7d20\u6570\uff1f\u65b9\u6cd5\u4e00\uff1a
\uff03include\uff1cstdio\uff0eh\uff1e
int main\uff08\uff09\uff5b
int i\uff0cj\uff1b
printf\uff08\uff02\u8bf7\u8f93\u5165\u4e00\u4e2a\u6b63\u6574\u6570\u3002\uff3cn\uff02\uff09\uff1b
scanf\uff08\uff02\uff05d\uff02\uff0c\uff06i\uff09\uff1b
if\uff08i\uff1c2\uff09
printf\uff08\uff02\u5c0f\u4e8e2\uff0c\u8bf7\u91cd\u65b0\u8f93\u5165\u3002\uff3cn\uff02\uff09\uff1b
elseif\uff08i\uff052\uff1d\uff1d0\uff09
printf\uff08\uff02\uff05d\u4e0d\u662f\u4e00\u4e2a\u7d20\u6570\u3002\uff3cn\uff02\uff0ci\uff09\uff1b
else\uff5b
for\uff08j\uff1d2\uff1bj\uff1c\uff1di\uff0f2\uff1bj\uff0b\uff0b\uff09\uff5b
if\uff08i\uff05j\uff1d\uff1d0\uff09\uff5b
printf\uff08\uff02\uff05d\u4e0d\u662f\u4e00\u4e2a\u7d20\u6570\u3002\uff3cn\uff02\uff0ci\uff09\uff1b
break\uff1b
\uff5d
if\uff08j\uff1ei\uff0f2\uff09\uff5b
printf\uff08\uff02\uff05d\u662f\u4e00\u4e2a\u7d20\u6570\u3002\uff3cn\uff02\uff0ci\uff09\uff1b
break\uff1b
\uff5d
\uff5d
\uff5d
\uff5d
\u65b9\u6cd5\u4e8c\uff1a
\uff03include\uff1cstdio\uff0eh\uff1e
int main\uff08\uff09\uff5b
int a\uff1d0\uff1b
int num\uff1d0\uff1b
scanf\uff08\uff02\uff05d\uff02\uff0c\uff06num\uff09\uff1b
for\uff08inti\uff1d2\uff1bi\uff1cnum\uff0d1\uff1bi\uff0b\uff0b\uff09\uff5b
if\uff08num\uff05i\uff1d\uff1d0\uff09\uff5b
a\uff0b\uff0b\uff1b
\uff5d
\uff5d
if\uff08a\uff1d\uff1d0\uff09\uff5b
printf\uff08\uff02YES\uff3cn\uff02\uff09\uff1b
\uff5delse\uff5b
printf\uff08\uff02NO\uff3cn\uff02\uff09\uff1b
\uff5d
\uff5d
\u65b9\u6cd5\u4e09\uff1a
\uff03include\uff02stdio\uff0eh\uff02
int main\uff08\uff09\uff5b
printf\uff08\uff02\uff3ct\uff3ct\uff3ct\uff3ct\uff3cthelloworld\uff3cn\uff02\uff09\uff1b
int a\uff0ci\uff1b
do\uff5b
printf\uff08\uff02inputnumberjudgeprimenumber\uff1a\uff3cn\uff02\uff09\uff1b
scanf\uff08\uff02\uff05d\uff02\uff0c\uff06a\uff09\uff1b
for\uff08i\uff1d2\uff1bi\uff1ca\uff1bi\uff0b\uff0b\uff09
if\uff08a\uff05i\uff1d\uff1d0\uff09break\uff1b
if\uff08i\uff1d\uff1da\uff09
printf\uff08\uff02\uff05d\u662f\u7d20\u6570\uff3cn\uff02\uff0ca\uff09\uff1b
else
printf\uff08\uff02\uff05d\u4e0d\u662f\u7d20\u6570\uff3cn\uff02\uff0ca\uff09\uff1b
\uff5dwhile\uff08a\uff01\uff1d0\uff09\uff1b
\uff5d
\u5224\u65ad\u4e00\u4e2a\u6574\u6570m\u662f\u5426\u662f\u7d20\u6570\uff0c\u53ea\u9700\u628am\u88ab 2 ~ m-1 \u4e4b\u95f4\u7684\u6bcf\u4e00\u4e2a\u6574\u6570\u53bb\u9664\uff0c\u5982\u679c\u90fd\u4e0d\u80fd\u88ab\u6574\u9664\uff0c\u90a3\u4e48m\u5c31\u662f\u4e00\u4e2a\u7d20\u6570\u3002\u601d\u8def1)\u7684\u4ee3\u7801\uff1a
#include
int main(){
int a=0; // \u7d20\u6570\u7684\u4e2a\u6570
int num=0; // \u8f93\u5165\u7684\u6574\u6570
printf("\u8f93\u5165\u4e00\u4e2a\u6574\u6570\uff1a");
scanf("%d",&num);
for(int i=2;i<num;i++){if(num%i==0){a++; // \u7d20\u6570\u4e2a\u6570\u52a01}}
if(a==0){printf("%d\u662f\u7d20\u6570\u3002\n", num);}else{printf("%d\u4e0d\u662f\u7d20\u6570\u3002\n", num);}return 0;}
\u5224\u65ad\u65b9\u6cd5\u8fd8\u53ef\u4ee5\u7b80\u5316\u3002m\u4e0d\u5fc5\u88ab 2 ~ m-1 \u4e4b\u95f4\u7684\u6bcf\u4e00\u4e2a\u6574\u6570\u53bb\u9664\uff0c\u53ea\u9700\u88ab 2 ~ \u4e4b\u95f4\u7684\u6bcf\u4e00\u4e2a\u6574\u6570\u53bb\u9664\u5c31\u53ef\u4ee5\u4e86\u3002\u5982\u679cm\u4e0d\u80fd\u88ab 2 ~ \u95f4\u4efb\u4e00\u6574\u6570\u6574\u9664\uff0cm\u5fc5\u5b9a\u662f\u7d20\u6570\u3002\u4f8b\u5982\u5224\u522b17\u662f\u662f\u5426\u4e3a\u7d20\u6570\uff0c\u53ea\u9700\u4f7f17\u88ab2~4\u4e4b\u95f4\u7684\u6bcf\u4e00\u4e2a\u6574\u6570\u53bb\u9664\uff0c\u7531\u4e8e\u90fd\u4e0d\u80fd\u6574\u9664\uff0c\u53ef\u4ee5\u5224\u5b9a17\u662f\u7d20\u6570\u3002\u601d\u8def2)\u7684\u4ee3\u7801\uff1a
#include
#include
void main(){int m; // \u8f93\u5165\u7684\u6574\u6570
int i; // \u5faa\u73af\u6b21\u6570
int k; // m \u7684\u5e73\u65b9\u6839
printf("\u8f93\u5165\u4e00\u4e2a\u6574\u6570\uff1a");
scanf("%d",&m);
// \u6c42\u5e73\u65b9\u6839\uff0c\u6ce8\u610fsqrt()\u7684\u53c2\u6570\u4e3a double \u7c7b\u578b\uff0c\u8fd9\u91cc\u8981\u5f3a\u5236\u8f6c\u6362m\u7684\u7c7b\u578b
k=(int)sqrt( (double)m );
for(i=2;i<=k;i++)
if(m%i==0)
break;
// \u5982\u679c\u5b8c\u6210\u6240\u6709\u5faa\u73af\uff0c\u90a3\u4e48m\u4e3a\u7d20\u6570
// \u6ce8\u610f\u6700\u540e\u4e00\u6b21\u5faa\u73af\uff0c\u4f1a\u6267\u884ci++\uff0c\u6b64\u65f6 i=k+1\uff0c\u6240\u4ee5\u6709i>k
if(i>k)
printf("%d\u662f\u7d20\u6570\u3002\n",m);
else
printf("%d\u4e0d\u662f\u7d20\u6570\u3002\n",m);
return 0;}
方法一:
#include<stdio.h>
int main(){
int i,j;
printf("请输入一个正整数。\n");
scanf("%d",&i);
if(i<2)
printf("小于2,请重新输入。\n");
elseif(i%2==0)
printf("%d不是一个素数。\n",i);
else{
for(j=2;j<=i/2;j++){
if(i%j==0){
printf("%d不是一个素数。\n",i);
break;
}
if(j>i/2){
printf("%d是一个素数。\n",i);
break;
}
}
}
}
方法二:
#include<stdio.h>
int main(){
int a=0;
int num=0;
scanf("%d",&num);
for(inti=2;i<num-1;i++){
if(num%i==0){
a++;
}
}
if(a==0){
printf("YES\n");
}else{
printf("NO\n");
}
}
方法三:
#include"stdio.h"
int main(){
printf("\t\t\t\t\thelloworld\n");
int a,i;
do{
printf("inputnumberjudgeprimenumber:\n");
scanf("%d",&a);
for(i=2;i<a;i++)
if(a%i==0)break;
if(i==a)
printf("%d是素数\n",a);
else
printf("%d不是素数\n",a);
}while(a!=0);
}
解释如下:
#include"stdio.h"
#include"math.h"
main()
{
int
i,k,m;
//定义三个整形变量
scanf("%d",&i);
//输入i的值
k=sqrt(i);
//把输入的i的值的平方根的值赋值给k
for(m=2;m<=k;m++)
//从2开始进入循环,判断从2到k之间的数是否能被i整除
if(i%m==0)
//如果能被2整除则用break跳出循环
break;
if(m>k)
//判断通过循环后的m的值是否比k大,如果比k大则i是素数
printf("%d是素数
",i);
else
//如果不是则i不是素数
printf("%d不是素数",i);
getch();
}
解释如下:
#include"stdio.h"
#include"math.h"
main()
{
int
i,k,m;
//定义三个整形变量
scanf("%d",&i);
//输入i的值
k=sqrt(i);
//把输入的i的值的平方根的值赋值给k
for(m=2;m<=k;m++)
//从2开始进入循环,判断从2到k之间的数是否能被i整除
if(i%m==0)
//如果能被2整除则用break跳出循环
break;
if(m>k)
//判断通过循环后的m的值是否比k大,如果比k大则i是素数
printf("%d是素数
",i);
else
//如果不是则i不是素数
printf("%d不是素数",i);
getch();
}
解释如下:
#include"stdio.h"
#include"math.h"
main()
{
int
i,k,m;
//定义三个整形变量
scanf("%d",&i);
//输入i的值
k=sqrt(i);
//把输入的i的值的平方根的值赋值给k
for(m=2;m<=k;m++)
//从2开始进入循环,判断从2到k之间的数是否能被i整除
if(i%m==0)
//如果能被2整除则用break跳出循环
break;
if(m>k)
//判断通过循环后的m的值是否比k大,如果比k大则i是素数
printf("%d是素数
",i);
else
//如果不是则i不是素数
printf("%d不是素数",i);
getch();
}
最佳方案是用素数分布来处理,在处理大素数时尤其合理,用算术基本定理可能太慢了。如果知道素数分布相关知识,编出来还是很容易的,不然告诉你也是白搭。
绛旓細濡傛灉鍚冨埌鏌愪竴涓插懗閬撲笉濂芥墧浜嗘帴鐫鍚冣旇繖鍙玞ontinue 濡傛灉鍚冨埌鏌愪竴涓插懗閬撲笉濂藉叾浠栫殑涓嶅悆浜嗏旇繖鍙玝reak 濡傛灉鎴戝厛鍚冭崵鐨勫啀鍚冩湁鑽ゆ湁绱犵殑鏈鍚庡悆绱犵殑鈥旇繖鍙啋娉℃帓搴 濡傛灉鎴戞兂闅忎究鍚冿紝鍚冮ケ涓烘鈥旇繖鍙玾hlie寰幆 濡傛灉鎴戜笉绠¢タ涓嶉タ鍏堝悆涓涓测旇繖鍙玠o-whlie 鍚冨畬浜嗘垜鎵撳紑閽卞寘鈥旇繖鍙皟鐢ㄥ嚱鏁 鎵撳紑閽卞寘鎴戜粯閽辩粰浠...
绛旓細棣栧厛閫氳繃缂栧啓鍑芥暟鐢ㄨ鍙ユ弿杩拌В鍐虫瘡涓涓瀛愰棶棰樼殑瑙e喅杩囩▼鐨勬楠わ紝鐒跺悗鍙互鐢ㄤ竴鏉″嚱鏁板噵鐢ㄨ鍙ユ弿杩拌В鍐虫煇涓簣闂鐨勮繃绋嬬殑姝ラ锛屾渶鍚庡湪涓涓富绋嬪簭涓敤澶氭潯鍑芥暟璋冪敤璇彞鎻忚堪瑙e喅鍒嗚В涓哄涓瓙闂鐨勫鏉傞棶棰樼殑瑙e喅杩囩▼鐨勬楠ゃ備笉鍚岀‖浠剁粨鏋勫搴斾笉鍚岀殑缂栬瘧鍣 铏界劧闈㈠悜杩囩▼璇█涓庤绠楁満纭欢缁撴瀯鏃犲叧锛屼絾鐢ㄤ簬灏嗛潰鍚...
绛旓細杩欑鐜拌薄鍙孩鍑恒俵onglong鍦64浣嶇殑鑼冨洿搴旇鏄痆-2^63 锛2^63],鏃-9223372036854775808~9223372036854775807銆傚彲浠ヤ簨鍏堣创鍑虹粨鏋滐紝宸茬粡杩滆秴杩欎釜鑼冨洿浜嗭細浠g爜濡備笅锛歩nclude<stdio.h>#define size 100//棰勪及浣嶆暟 int main(){int i,j,a,flag;int answer[size];answer[0] = 1;for(i = 1;i<size;i+...
绛旓細鐩墠鎴戜滑瀛︽牎寮鐨勮绋嬪ぇ姒傛湁杩欎簺鐗╃悊鐢佃矾 绾垮舰浠f暟 澶у鐗╃悊 楂樼瓑鏁板 澶у鑻辫 浣庨鐢靛瓙绾胯矾 澶嶅彉鍑芥暟涓庣Н鍒嗗彉鎹 鐢佃矾鍒嗘瀽瀹為獙 妯$數瀹為獙 C璇█ 楂橀鐢靛瓙绾胯矾 鏁扮悊鏂圭▼ 淇″彿涓庣郴缁 鏁板瓧鐢佃矾閫昏緫璁捐路路路涓婇潰鐨勮绋嬮兘瀛﹀畬浜 浣嗘瘡涓闂ㄦ垜瀛︽噦浜喡锋垜鎯抽噸鏂拌嚜瀛︿竴閬 鎯抽棶闂浠庨偅浜涘紑濮 閭d簺璇剧▼瑕侀噸鐐圭湅閭d簺鍩烘湰鍙互涓...
绛旓細鑰宑鍒欏湪绠楁硶鏂归潰杈冨己锛屽悜鏄仛涓浜3d绋嬪簭灏卞彲浠ョ敤c锛宑璇█鍋氬嚭鐨勭梾姣掍篃寰堝己澶э紙褰撶劧c璇█涔熶笉鏄悆绱犵殑锛锛宔璇█鍒欐槸vb鐨勨滃彉绉嶁濇瘮杈冪畝鍗曚篃閫氫織鏄撴噦锛涙讳箣涓寮濮嬪c鏈夌偣闅撅紝鎴戝缓璁厛瀛b锛屽鏋滆寰梫b閮介毦鐨勮瘽锛屽氨鍘诲e璇█锛堟敞锛氬彧瑕佹妸涓闂ㄨ瑷瀛︾殑绮鹃氾紝閭d箞瀛﹀叾浠栬瑷灏卞緢绠鍗曚簡锛...
绛旓細8 .鏈変竴涓闈㈠寘,璧扮潃璧扮潃鑲氬瓙楗夸簡,浜庢槸灏辨妸鑷繁鍚冧簡 9 Q:闈炴床椋熶汉鏃忕殑閰嬮暱鍚冧粈涔? A:浜哄晩! Q:閭f湁涓澶,閰嬮暱鐥呬簡,鍖荤敓鍛婅瘔浠栬鍚冪礌,閭d粬鍚冧粈涔? A:鍚冩鐗╀汉!~~ 10 缇庡浗浜衡埗浣犵湅杩囨湪澶村仛鐨勬澂瀛愬悧? 涓浗浜衡埗娌℃湁! 缇庡浗浜衡埗閭d负浠楹戒綘浠腑鍥藉瓧鐨勨滄澂鈥滄槸鏈ㄥ瓧鏃? 涓浗浜衡埗鈥滄澂鈥滃瓧鏃佽竟涓嶆槸鏈変釜鈥...
绛旓細瑕佹兂鑷繁鍐欑▼搴忥紝閭i鍏堝氨瑕佸C璇█锛岃岄噸鐐瑰氨鍦ㄨ繖瀛璇█涓婇潰锛孋璇█鍙笉鏄畝绠鍗曞崟灏辫兘瀛︿細鐨勶紝閭e氨鍍忔槸涓涓笉鎳傝嫳璇殑浜猴紝浠庡ご寮濮嬪鑻辫涓鏍凤紝涓嶈繃鍐欑▼搴忚鐨勪笉鏄嫳璇熀纭锛岃屾槸鏁板鍩虹锛屽挨鍏舵槸鍑芥暟锛屽鏋滀綘瑙夊緱鏁板寰堥毦鐨勮瘽锛屾垜鍔濅綘杩樻槸鍒兂浜嗭紝鎯宠鑷繁鑳藉啓鍑鸿兘鍦ㄨ吘璁殑鐪肩毊搴曚笅杩愯锛岃屼笖杩...
绛旓細鑻︾瓑31鍒嗛挓: C璇█涓庢牱璁剧疆鏂囨湰鍦ㄧ獥鍙g殑杈撳嚭浣嶇疆 鍥炵瓟 鑻︾瓑1灏忔椂: 鎯虫眰鍔╀竴涓,鍏充簬xpspeak浣跨敤鐨勯棶棰 鍥炵瓟 鑻︾瓑1灏忔椂: 缁欏ス鍙戜俊鎭,濂逛篃鍥炴垜,鍥炲鍑犳潯浜嗗氨涓嶈浜轰簡,鎯呭晢楂... 鍥炵瓟 鑻︾瓑2灏忔椂: 涓轰粈涔堟剰澶у埄鍥犱负甯呭摜鍑哄悕鍗存病鏈夊洜涓虹編濂冲嚭鍚 鍥炵瓟 鏇村绛夊緟姹傚姪闂 > 鐧诲綍...
绛旓細绗簩鐐癸紝瑙︽懜灞忋俰Phone鏃ュ父鎿嶄綔闇瑕佺敤鍒拌Е鎽稿睆锛屽鏋滀笉灏忓績浠庨珮澶勬帀钀藉埌鍦颁笅銆傚氨绠楀睆骞曚笉鎹熷潖銆佽川閲忚繃纭紝 涔熶細鐢变簬鎸姩鑰屽奖鍝嶆墜鏈哄唴閮ㄧ數瀛愬厓浠舵澗鍔紝鑰岄檷浣庢墜鏈轰娇鐢ㄥ鍛姐傜涓夌偣锛孒ome閿侶ome閿槸鍙互杩斿洖銆佸弻鍑诲叧闂悗鍙拌蒋浠剁殑涓涓閲嶈鎸夐敭锛岃鎸夐敭鏄繛鐫涓绘澘鐨勶紝涓鏃︽崯鍧忓氨蹇呴』鏇存崲涓绘澘銆傚綋鐒朵篃鏄緱鐪...