一.每日小语
人的一切痛苦,本质上都是对自己的无能的愤怒。——王小波
自己思考
判断一个函数是否为质数,这个我在之前练过,我想至少两次,而这一次则是问我如何在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);//括号里要加num
return 0;
}
嗯,