一.每日小语
人的一切痛苦,本质上都是对自己的无能的愤怒。——王小波
自己思考
判断一个函数是否为质数,这个我在之前练过,我想至少两次,而这一次则是问我如何在main函数中调用,这个概念我不理解,所以我想先敲写质数代码,然后再理解main函数。
#include <stdio.h>int main()
{int num;printf("请输入一个数:");scanf("%d",&num);for(int i=3;num>i;i++){if(num%i==0){printf("%d是一个质数",num);break;}else{printf("%d不是一个质数",num);break;}}return 0;
}
这个运行就很难受,我输入5它告诉我不是质数。
然后呢,我就想到了之前好像有一个提前设置一个数,然后改变它的0,1值。
#include <stdio.h>int main()
{int num;int IsPrime=0;printf("请输入一个数:");scanf("%d",&num);for(int i=2;num>i;i++){if(num%i!=0){IsPrime=0;}else{IsPrime=1;break;}}if(IsPrime=1){printf("%d是一个质数",num);}else{printf("%d不是一个质数",num);}return 0;
加了以后还是有问题,百思不得其解。
-
在比较
IsPrime
的值时,应该使用双等号(==)而不是单等号(=)。单等号用于赋值操作,而双等号用于比较操作。
应将if(IsPrime=1)
修改为if(IsPrime==1)
。 -
当前代码的逻辑是在找不到能整除的因子时判断为质数,这是错误的。应该修改为找到能整除的因子时判断为非质数。
#include <stdio.h>int main() {int num;int IsPrime=0;printf("请输入一个数:");scanf("%d",&num);for(int i=2;i*i<num;i++){if(num%i==0){IsPrime=0;break;}}if(IsPrime==1){printf("%d是一个质数",num);}else{printf("%d不是一个质数",num);}return 0; }
这一段代码还是有问题,说明之前根本没学懂,唉,学了就忘,究竟在学什么
#include <stdio.h>int main() {int num;int isPrime = 1;printf("请输入一个数:");scanf("%d", &num);for (int i = 2; i < num; i++) {if (num % i == 0) {isPrime = 0;break;}}if (isPrime == 1) {printf("%d是一个质数", num);} else {printf("%d不是一个质数", num);}return 0; }
通过gpt调试出来的代码,很好,一次就成功,对照了一下我自己的主要问题在于初始IsPrime应该为1
main函数调用
这个老师上课提了一嘴,我大概有一点yinx,但还是不清晰。
#include <stdio.h>int isPrime(int num) {if (num <= 1) {return 0;} else {for (int i = 2; i < num; i++) {if (num % i == 0) {return 0;}}}return 1;
}int main() {int num;printf("请输入一个数:");scanf("%d", &num);if (isPrime(num)) {printf("%d是一个质数\n", num);} else {printf("%d不是一个质数\n", num);}return 0;
}
gpt代码学习。。。
学了一点,自己搞了个更简单的。
#include <stdio.h>int IsPrime(int num)//输入参数是 num,即要判断的数
{int isPrime = 1;for (int i = 2; i < num; i++) {if (num % i == 0) {isPrime = 0;break;}}if (isPrime==1){printf("%d是一个质数", num);} else {printf("%d不是一个质数", num);}return 0;
}int main()
{int num;int isPrime = 1;printf("请输入一个数:");scanf("%d", &num);IsPrime(num);//括号里要加numreturn 0;
}
嗯,