No, they're different.
"const" is just a qualifier, that says to variable(!) that it cannot be changed in runtime. But all other attributes of variable persist: it has allocated storage, and this storage may be addressed. So any code do not just use it as literal, but refers to it by accessing to specified memory location (only in case of statc it can be simply optimized), and convertiong it to suitable data type in runtime. And as it have allocated storage, if you add it to header and include in several c sources, you'll get linkage error of multiple symbol definition until you mark them as extern. And in this case compiler shoudn't optimize code against it's actual value (until global optimisation is on).
"#define" simply substitutes a name with its value. Futhermore, "#define"d constant may be used in preprocessor: #ifdef to have conditional compilation upon its value, stringize # to have string with its value. And as compiler may analyse its value it may optimize code which depents on it and make required conversions in compile time.
For this example code:
#define SCALE 1
...
scaled_x = x * SCALE;
While it have SCALE defined to 1 compiler simply removes multiplications as it knows that x * 1 == x, but if it have (extern) const, it will heed to compile const fetch and actual multiplication because it cannot realize what will be constant as it will be known only on linking stage. (Extern is needed to use constant from several source files).
More closer equivalent of defining is using enumerations:
enum dummy_enum{
constant_value = 10010
};
But it restricted to integer values and have'nt advantages of define, so it is not widely used.
Const is useful when need to import onstant value from some library where it compiled in. Or if it used with pointers. Or it is array of constant values accessed through varable index value. Until one need this const have no advantages over define.